1

我对 jqm 很陌生,我尝试了大约 20 种不同的东西,并且已经在这几个小时了,我能开始工作的最好的就是下面的代码。

$(function() {
$('.load_more').live("click",function() {
//my ajax call here

success: function(htmldat){
    $("#more").remove();
       $("#updates").append(htmldat).listview('refresh');
       $("#more").trigger('create');

}
});
}
return false;
});
});

我的页面所做的是将数据库中的 10 条记录加载到列表视图中,我有一个按钮(.load_more)将接下来的 10 条记录附加到列表视图中。一旦我离开页面并返回并单击按钮,它就会触发两次。我已经提出了很多建议,但无法让一个工作,任何帮助将不胜感激。

还有我在使用它的页面上的结束正文标记之前加载的代码。

编辑

以下代码似乎有效,尽管当我用我的函数替换警报时它不起作用,没有触发任何事件。

$(document).delegate("#clickers", "pageinit", function () {
  $(".load_more").off('click').on('click', function () {
    alert("hello");
  });
});

单击按钮时,它会获取数据并将其附加到列表视图中,当我重新创建按钮时可能会杀死事件吗?

$("#more").remove();
$("#updates").append(htmldat).listview('refresh');
$("#more").trigger('create');
4

1 回答 1

2

阅读您的编辑后,很明显问题肯定在于重新创建按钮。事件处理程序绑定到创建处理程序时存在的 DOM 元素;它们并不适用于具有相同 ID 的所有后续元素。一个简单的解决方案是在每次创建时绑定处理程序:

var recreateButton = function() { 
    $("#more").remove();
    $("#updates").append(htmldat).listview('refresh');
    $("#more").trigger('create');
    $("#more").off('click').on('click', function(){});
}

或者,您可以只使用按钮元素上的 onClick 事件在每次单击它时调用一个函数。

于 2012-08-31T04:16:19.527 回答