最终编辑
解决方案是使用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相关,这意味着当文档准备好时,该函数只被触发一次,对吗?
然后在触发该功能后,文档仍处于准备状态,也许它应该准备就绪了。不确定我做对了。
请帮我理解这一点。
答案 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");
});
});