如何通过另一次点击一次又一次地触发事件(点击)

时间:2014-03-10 19:00:40

标签: javascript jquery ajax triggers

最终编辑

解决方案是使用Drupal行为附件的框架(Drupal)解决方案:https://drupal.org/node/756722#behaviors而不仅仅是jquery。 从这里我只是将我触发的动作附加到小部件上。

-----

上下文描述:用户可以在XX个投票数限制内对一个或多个项目进行多次投票。每次他们投票时,我都想触发刷新按钮,更新一个块,显示表中聚合的所有投票。然后该块使用ajax函数重新加载表中的列表,这部分工作得很好。

对我来说不幸的是,下面的功能只能工作一次。在第一次点击触发刷新按钮后,用户进行的下一次“a.vote”点击不再触发刷新。

function refreshtable(){
$("a.vote").click(function(){
    $(".refresh-button").trigger("click");
    //Missing here something saying: do it again and again as far as user clicks;
    });
};
$(document).ready(refreshtable);

我的问题:如何改进此功能以使触发一次又一次地发生?

编辑:这是应该触发第二个按钮的第一个按钮的代码:

$('.plus1-widget', context).once('plus1', function(){
    var plus1_widget = $(this);
    plus1_widget.find('.plus1-link').attr('href', function(){ return $(this).attr('href') + '&json=true'; }).click(function(){
      $.getJSON($(this).attr('href'), function(json){
        if (json) {
          var newWidget = $(json.widget);
          newWidget.hide();
          plus1_widget.replaceWith(newWidget);
          newWidget.fadeIn('slow');
          Drupal.attachBehaviors();
        }
      });
      return false;
    });
  });

有这个:plus1_widget.replaceWith(newWidget),所以@chad和@JasonP建议它可能与document.ready相关,这意味着当文档准备好时,该函数只被触发一次,对吗?
然后在触发该功能后,文档仍处于准备状态,也许它应该准备就绪了。不确定我做对了。 请帮我理解这一点。

2 个答案:

答案 0 :(得分:1)

我的猜测是,当您刷新html时,绑定事件的a.vote元素会被替换,导致处理程序丢失。尝试事件委托:

$(document).on('click', 'a.vote', function() {
    $(".refresh-button").click();
});

答案 1 :(得分:0)

尝试

$(document).ready(function(){
$("a.vote").click(function(e){
e.preventDefault();
$(".refresh-button").trigger("click");
});
});