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

How an event (click) can be triggered again and again by another click

本文关键字:单击 一次又一次 一次 何通过 事件      更新时间:2023-09-26

最终编辑

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

,

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

对我来说不幸的是,下面的函数只工作一次。在第一次点击触发刷新按钮之后,用户所做的下一次"a.c 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);

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

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

$('.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建议它可能与文档有关。Ready表示该函数只在文档准备好时触发一次,对吧?
函数被触发后,文档仍然准备好了,也许它应该再次准备好。我不确定我理解得对不对。

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

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

Try

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