Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件未触发_Javascript_Jquery_Json_Hyperlink - Fatal编程技术网

Javascript jQuery事件未触发

Javascript jQuery事件未触发,javascript,jquery,json,hyperlink,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",

我有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;
    });
});
这里是
index.php
代码:

$(function (){
    $("a[name=pesan]").click(function (){
        alert("holalalalalal.....!");    
    });
});
    //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>
//一些代码
帖子:
选择发布。。。
click()
将仅为调用
click
时页面中存在的元素绑定事件(不带选择器的
on()
bind()
,以及用于绑定的快捷方式组中的所有其他方法也是如此;
keydown()
change()
等)

因为您的另一个元素是在一段时间后通过AJAX添加的,所以处理程序不受它的约束

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

$(function (){
    $(document).on('click', 'a[name=pesan]', function () {
        alert("holalalalalal.....!");    
    });
});
由于jQuery1.7中引入了
on()
,如果您使用的是jQuery的早期版本(就像这个问题提出时存在的版本),那么可以使用或代替on

$(function (){
    $('a[name=pesan]').live('click', function () {
        alert("holalalalalal.....!");    
    });
});
我想提一提(因为我在网上搜索的任何“事件不开火”案例中都没有提到这一点)有可能会咬到你

如果您碰巧使用从DOM中临时提取某些内容,然后重新插入,那么您将丢失事件。您需要使用的是在重新插入后保留数据和事件。这可能很难调试,因为一切看起来都很正常,而事件调试工具充其量只是粗略的


(就我个人而言,我更喜欢将它们称为.detacheandScrubDataandEvents().detache(),因为我喜欢描述性名称,这样可以节省调试时间。对于那些找到的人,请删除().detache()在语义上和意义上都是有区别的名字……愿和平与你同在……但你大错特错。)

谢谢,这很有效。。。谢谢你的解释。。。这就是我想要的…谢谢你!我以前一直使用“on”直接指向元素,比如:$(“p”).on('click',function(){});有什么解释吗?我注意到Chrome抛出了这个警告:主线程上的同步XMLHttpRequest被弃用,因为它会对最终用户的体验产生有害影响。如需更多帮助,请检查。使用回答中的
.live()
,但请记住,在页面中多次使用同一id是无效的(id是唯一的),并且将来很可能会导致其他问题。@gaby感谢您的建议。。。