jQuery事件没有触发

Sin*_*u13 7 javascript jquery json hyperlink

我有3个文件:

  • js_json.js - >我的json代码
  • javascript.js - >我的javascript函数
  • 的index.php

这里的代码为js_json.js:

$(function(){
    $('#postTitle').change(function(){

        var title_id = $("#postTitle").val();


        $.ajax({
            type:"post",
            url:"proses.php",
            data:"title_id=" + title_id,
            dataType:"json",
            success:function(data){
                body="";
                //$.each(data, function(i,n){
                    //body = n['body'];    
                //});
                body += "<a href=\"javascript:void(0);\" id=\"pesan\" name="pesan" onClick=\"\">Hola Test</a>";
                $(".postBody").empty();
                $(".postBody").append(body);
            },
            error:function(data){
                $(".postBody").empty();
                $(".postBody").append("NO Post Selected.");
            }

        });
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

在这里我的javascript.js代码:

$(function (){
    $("a[name=pesan]").click(function (){
        alert("holalalalalal.....!");    
    });
});
Run Code Online (Sandbox Code Playgroud)

这里的index.php代码:

    //some code
    <body>
        <a href="javascript:void(0);" id="pesan" name="pesan">Hola Test 1</a>
        Posts : <br />
        <select name="title" id="postTitle">
            <option value="">Select Post...</option>
            <?php
                $sql = "SELECT id, title FROM posts ORDER BY title";
                $query = mysql_query($sql) or die(mysql_error());

                while($rows = mysql_fetch_array($query)){
                    print('<option value="' . $rows['id'] . '">' . $rows['title'] . '</option>');
                }
            ?>
        </select>
        <br />
        Body : <br />
        <div class="postBody">
            Will show the body of post.
        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

当我点击"Hola Test 1"链接时,它会起作用并显示消息.问题是,在我单击选择选项后,出现链接"Hola Test",然后我点击那个("Hola Test")链接,消息没有出现,并且firebug中没有错误...

有人可以向我解释为什么......?谢谢...

Mat*_*att 19

click()将仅结合于存在于当时的页面元素事件click被调用(这同样适用on(),而不选择器,bind()和快捷组用于结合在所有其他方法; keydown(),change()等).

因为稍后通过AJAX添加了其他元素,所以处理程序不受其约束.

.on()与选择器一起使用,它将事件绑定到选择器匹配的所有当前和未来元素.

$(function (){
    $(document).on('click', 'a[name=pesan]', function () {
        alert("holalalalalal.....!");    
    });
});
Run Code Online (Sandbox Code Playgroud)

自从on()jQuery 1.7中引入以来,如果你使用的是早期版本的jQuery(就像问这个问题时那样),你可以使用live()delegate()代替on;

$(function (){
    $('a[name=pesan]').live('click', function () {
        alert("holalalalalal.....!");    
    });
});
Run Code Online (Sandbox Code Playgroud)