【问题标题】:can't interact with jquery loaded button that uses jquery [duplicate]无法与使用 jquery 的 jquery 加载按钮交互 [重复]
【发布时间】:2016-02-10 22:21:35
【问题描述】:

在投票/投票系统上工作,人们可以在投票前点击查看结果,然后再次点击返回以再次查看选项。

问题是在加载结果时,我加载以再次显示选项的按钮似乎不起作用:

它们的代码基本相同(我已经发出警报以测试它是否甚至拿起按钮,它不是):

$('.results_button').click(function() {
    var poll_id = $(this).data('poll-id');
    $('.poll_content').load('/includes/ajax/poll_results.php', {'poll_id':poll_id});
});

$('.back_vote_button').click(function() {
    window.alert("Test");
    //var poll_id = $(this).data('poll-id');
    //$('.poll_content').load('/includes/ajax/poll_options.php', {'poll_id':poll_id});
});

back_vote_button 的实际代码是这样的,例如:

<button name="pollresults" class="back_vote_button" data-poll-id="1">Back to voting</button>

在与 jquery 加载的内容交互方面,我有什么遗漏吗?

【问题讨论】:

  • 是的,完全正确,干杯!

标签: javascript php jquery


【解决方案1】:

您的按钮是在加载文档后创建的吗?如果在创建文档时不存在,则不绑定侦听器。您可以绑定侦听器事件,也可以更改单击以侦听已创建的对象,对于不好的示例,请尝试以下操作:

$(document).on('click', '.back_vote_button', function(){ 
     window.alert("Test");
 });

这应该可以工作,但它会在您每次单击正文时进行侦听,然后确定您单击的内容是否是问题所在。

【讨论】:

  • 这行得通,但是什么是“更清洁”的方法,正如你所说的那样,这是一个坏例子?
  • 我建议缩小搜索范围,每次单击窗口时都会触发 document.on click,如果将其缩小到按钮所在的位置,请说“$('#voteButtonContainer')。 on('click', '.back_vote_b..." 它只会在单击 id 为 'voteButtonContainer' 的区域时侦听。所以只需通过仅在您知道按钮的容器或区域中侦听来缩小它正在侦听的位置将存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
相关资源
最近更新 更多