Javascript JQuery UI选项卡-为通过ajax加载的选项卡重新绑定事件
当通过ajax加载选项卡时,是否有适当的方法在jQueryUI中重新绑定事件。例如,在下面的代码中,成功事件调用了一个“initBinding()”函数,该函数为不同的类设置了一些自定义的单击事件处理程序。问题是,当我切换标签很多次,然后触发一个点击事件时,我会得到一些奇怪的屏幕闪烁效果。如果我刷新整个页面,然后直接转到单击事件,它不会闪烁。所以我认为它与多次绑定有关 如果我从成功事件中取出'initBinding()'方法,那么通过ajax加载的任何选项卡都不会触发我设置的任何事件。有没有标准/更好的方法来处理这样的绑定事件Javascript JQuery UI选项卡-为通过ajax加载的选项卡重新绑定事件,javascript,jquery-ui,jquery,Javascript,Jquery Ui,Jquery,当通过ajax加载选项卡时,是否有适当的方法在jQueryUI中重新绑定事件。例如,在下面的代码中,成功事件调用了一个“initBinding()”函数,该函数为不同的类设置了一些自定义的单击事件处理程序。问题是,当我切换标签很多次,然后触发一个点击事件时,我会得到一些奇怪的屏幕闪烁效果。如果我刷新整个页面,然后直接转到单击事件,它不会闪烁。所以我认为它与多次绑定有关 如果我从成功事件中取出'initBinding()'方法,那么通过ajax加载的任何选项卡都不会触发我设置的任何事件。有没有标准
$(document).ready(function () {
$("#tabs").tabs({
select: function (event, ui) {
var tabID = "#ui-tabs-" + (ui.index + 1);
$(tabID).html("<b>Fetching Data....Please wait....</b>");
},
ajaxOptions: {
error: function (xhr, status, index, anchor) {
$(anchor.hash).html("Could not load tab data");
},
success: function (xhr, status, index, anchor) {
initBinding();
}
}
});
});
function initBinding() {
$(".editButton").click(function () {
//event logic...
});
}
$(文档).ready(函数(){
$(“#制表符”)。制表符({
选择:功能(事件、用户界面){
var tabID=“#ui选项卡-”+(ui.index+1);
$(tabID).html(“正在提取数据…请稍候…”);
},
ajaxOptions:{
错误:函数(xhr、状态、索引、锚定){
$(anchor.hash).html(“无法加载选项卡数据”);
},
成功:功能(xhr、状态、索引、锚定){
initBinding();
}
}
});
});
函数initBinding(){
$(“.editButton”)。单击(函数(){
//事件逻辑。。。
});
}
您应该使用jQuery的
现在和将来,为与当前选择器匹配的所有元素将处理程序附加到事件
在代码中:
$(".editButton").click(function () {
将成为
$(".editButton").live('click', function () {
使用此技术,您可以完全删除initBinding()
函数,并在onready函数中使用.live()
语句
现在和将来,为与当前选择器匹配的所有元素将处理程序附加到事件
在代码中:
$(".editButton").click(function () {
将成为
$(".editButton").live('click', function () {
使用此技术,您可以完全删除
initBinding()
函数,并在onready函数中使用.live()
语句。是否有类似的机制将类绑定到jquery ui方法?例如,如果我有$('div.accordion').accordion();。如果我通过ajax加载一个带有“accordion”类的div的页面,则不会加载accordion效果。是否有一种类似于live()的方法可以在这种情况下工作?从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。是否有类似的机制将类绑定到jquery ui方法?例如,如果我有$('div.accordion').accordion();。如果我通过ajax加载一个带有“accordion”类的div的页面,则不会加载accordion效果。是否有一种类似于live()的方法可以在这种情况下工作?从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。