javascript - jQuery 事件未触发

标签 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;
    });
});

这是我的 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>

我的问题是:

当我点击链接“Hola Test 1”时,它起作用了,并且出现了消息。问题是,在我点击选择选项后,“Hola Test”链接出现,然后我点击那个(“Hola Test”)链接,消息没有出现并且 Firebug 中没有错误......

有人能给我解释一下为什么……吗?谢谢...

最佳答案

click() 只会为调用 click 时页面中存在的元素绑定(bind)事件(同样适用于 on() 没有选择器,bind(),以及绑定(bind)快捷方式组中的所有其他方法;keydown()change() 等)。

因为您的其他元素是通过 AJAX 添加的一段时间后,处理程序未绑定(bind)它。

使用.on()而是使用选择器,它将事件绑定(bind)到选择器匹配的所有当前和 future 元素。

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

由于 on() 是在 jQuery 1.7 中引入的,如果您使用的是较早版本的 jQuery(如提出此问题时存在的版本),则可以使用 live()delegate()而不是开;

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

关于javascript - jQuery 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173238/

相关文章:

javascript - 使用 jQuery 在输入文本中设置光标

jquery - 每个使用jquery的多个轮播(carouFredSel),链接标识符问题

javascript - Jquery 和框架

javascript - 我怎么知道 json 网络 token 是否被篡改

javascript - 获取tr jquery td的每个值的动态值

javascript - OnSubmit 函数不会更新 React 中的 React hook 状态变量

javascript - 如何更改 amchart 中的气球文本

jquery - 第 n 个类型 : all but n

php - 使用 Luracast ReSTLer——在正文中将 POST 变量作为 JSON 传递

json - 如何从 interface{} 转换为 struct 实例