0

再会。

我从数据中获取按钮.post

代码:

$(function () {

    $('.f1_start').on('click', function () {
        alert('hello');
    });

    $('.button_test').on('click', function () {
        $.post("update.php", {
                    ...
            },
            function (data) {
                    ...
                $('#div_test').html('').html(data); 
                //we get <button class="f1_start">test</button>
            });


    });

});

当我在 div 中单击带有类button_test的元素页面时,带有带有类的 Id加载按钮。但是第一个脚本 不适用于此按钮。.postdiv_testf1_start$('.f1_start').on('click',function(){

请告诉我为什么脚本不能处理负载.post

4

7 回答 7

1

当您清除 f1_start 的单击时,不存在,您必须在成功时清除它:

<script>
$(function(){



$('.button_test').on('click',function(){
$.post("update.php", {
...
},
function(data){
...
$('#div_test').html('');.html(data); //we get <button class="f1_start">test</button>
$('.f1_start').on('click',function(){
alert('hello');
});
});


});

});
</script>
于 2013-07-09T10:32:18.513 回答
1

您正在使用on但未正确委派它。您应该始终将其委托给在插入动态元素时存在于文档中的静态父容器

试试这个

 $('#div_test').on('click','.f1_start',function(){
   alert('hello');
  });

链接以阅读有关委派事件的更多信息

于 2013-07-09T10:32:36.040 回答
1

.on 像这样使用只会注册一次。您可以针对您知道将始终存在的对象注册事件。

您可以给它一些额外的上下文,例如包含 div,这样可能会更好:

$('#div_test').on('click', '.f1_start', function(){
  //.....
});

您还可以在回调中注册当前的 .on 事件,这将具有相同的效果并且效率更高,但通常通过适当的显示模块模式来更好地完成此类操作以仅注册您需要的事件。

另请注意,无需清空html然后设置它,设置它将替换它。

于 2013-07-09T10:33:22.537 回答
1

尝试:

$('#div_test').on('click','.f1_start',function(){
    alert('hello');
});
于 2013-07-09T10:33:38.990 回答
1
$('#div_test').on('click','.f1_start', function(e){
  e.preventDefault();
  alert('hello');
});

<button>相当于 asubmit所以你必须阻止 jQuery 中的默认操作,否则页面将重定向而不会显示你的警报。

于 2013-07-09T10:34:09.113 回答
1

假设 .f1_start 在 #div_start 内

尝试 :

$("#div_test").on('click',".f1_start",function(e){
  alert("AWESOME");
})
于 2013-07-09T10:34:15.553 回答
-1

起初,当“脚本”加载 $('.f1_start')...“选定元素”不存在...

加载帖子后,您需要取消绑定并再次设置点击;)

于 2013-07-09T10:33:54.300 回答