[Javascript] jQuery事件不会触发


Answers

我想提一下(因为在我搜遍网络的任何“事件没有解雇”的情况下,我都没有发现它有任何可能咬你的可能性)。

如果碰巧使用.remove()从DOM中暂时提取某些东西,然后重新插入它,那么您将失去事件。 你需要使用.detach()来保存重新插入后的数据和事件。 这可能很难调试,因为一切看起来都很正常,而事件调试工具最好是粗略的。

(个人而言,我会称它们更像.detachAndScrubDataAndEvents().detach() ,因为我是描述性名字的粉丝,节省了数小时的调试时间。对于那些发现.remove().detach()是语义的有意义的尊敬的名字...和平与你同在......但是你却错了。)

Question

我有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;
    });
});

在这里我的javascript.js代码:

$(function (){
    $("a[name=pesan]").click(function (){
        alert("holalalalalal.....!");    
    });
});

这里的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>

我的问题是:

当我点击链接“霍拉测试1”,它工作,并出现消息。 问题是,我点击选择选项后,出现链接“霍拉测试”,然后我点击(“霍拉测试”)链接,消息不会出现,并没有在萤火虫错误...

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