jquery重新加载后,单击';行不通
链接打开下拉列表以选择排序操作。排序后,页面通过jquery加载加载到自身中,下拉菜单关闭。我们可以再做一次。之后,打开下拉列表的链接不再工作,下拉列表保持关闭状态 如何解决这个问题?主要目标是提供一个工作(打开和关闭)下拉菜单,用于对动态表进行排序。(下拉列表也是动态的,因此需要加载ajax请求)jquery重新加载后,单击';行不通,jquery,load,bind,Jquery,Load,Bind,链接打开下拉列表以选择排序操作。排序后,页面通过jquery加载加载到自身中,下拉菜单关闭。我们可以再做一次。之后,打开下拉列表的链接不再工作,下拉列表保持关闭状态 如何解决这个问题?主要目标是提供一个工作(打开和关闭)下拉菜单,用于对动态表进行排序。(下拉列表也是动态的,因此需要加载ajax请求) 函数doLoad(排序){ var selector=“div#wrapper”; $(选择器).load('indexsort.php?act='+sort+'+selector,funct
函数doLoad(排序){
var selector=“div#wrapper”;
$(选择器).load('indexsort.php?act='+sort+'+selector,function(){
$('div#sortdropdown').hide();
doBindings();
});
}
函数doBindings(){
//单击时对表排序-按名称排序
$('a#sortn')。单击(函数(事件){
event.preventDefault();
多洛德(“sn”);
});
//单击时对表格排序-按日期排序
$('a#sortd')。单击(函数(事件){
event.preventDefault();
多洛德(“sd”);
});
//打开/关闭“按排序”下拉菜单
$('a#排序按钮')。单击(函数(事件){
event.preventDefault();
$('div#sortdropdown').toggle();
});
}
$(文档).ready(函数(){
//绑定单击,使其在加载方法后处于活动状态
doBindings();
//着陆后隐藏下拉列表
$('div#sortdropdown').hide();
});
将绑定移出doBindings()函数,并使用jQuery函数:
$('a#sortbutton').live("click",function(event) {
event.preventDefault();
$('div#sortdropdown').toggle();
});
另外,更改选择器
a#sortbutton
的效率低于简单的#sortbutton
,如下所述:
对于id选择器,jQuery使用
JavaScript函数
document.getElementById(),它是
效率极高。当另一个
选择器已附加到id
选择器,如h2#pageTitle、jQuery
在开始之前执行附加检查
将元素标识为匹配项
将绑定移出doBindings()函数,并使用jQuery函数:
$('a#sortbutton').live("click",function(event) {
event.preventDefault();
$('div#sortdropdown').toggle();
});
另外,更改选择器
a#sortbutton
的效率低于简单的#sortbutton
,如下所述:
对于id选择器,jQuery使用
JavaScript函数
document.getElementById(),它是
效率极高。当另一个
选择器已附加到id
选择器,如h2#pageTitle、jQuery
在开始之前执行附加检查
将元素标识为匹配项
我认为在调用indexsort.php文件之前,需要在doLoad函数中单击事件
我不推荐live,因为它的方法非常昂贵。我认为在调用indexsort.php文件之前,需要在doLoad函数中单击事件
我不推荐live,因为它的方法非常昂贵。更重要的是,如果我使用$('a#sortbutton').live('click',function(event)…那么链接在第一次加载后就不起作用了如果你使用
live()
,你不需要每次都重新运行doBindings()
。live()
'Attach[es]现在和将来,所有与当前选择器匹配的元素的事件处理程序。因此,您应该能够将该代码放在全局级别。是的!它可以工作!我将所有内容都放在live()和doBindings()函数之外。谢谢!@Marko:Cool:)我已经更新了我的答案,为下一个出现的人提供了更多描述,我还添加了一个性能改进,您应该实现它。还有一个解决方案是在下拉链接上解除绑定。哪一个在处理能力和内存方面更容易?更重要的是,如果我使用$('a#sortbutton').live('click',function(event)…那么链接在第一次加载后甚至不起作用如果你使用live()
,你不需要每次都重新运行doBindings()
。live()
“Attach[es]现在和将来,所有与当前选择器匹配的元素的事件处理程序。因此,您应该能够将该代码放在全局级别。是的!它可以工作!我将所有内容都放在live()和doBindings()函数之外。谢谢!@Marko:Cool:)我已经更新了我的答案,为下一个出现的人提供了更多描述,我还添加了一个性能改进,您应该实现它。还有一个解决方案是在下拉链接上解除绑定。哪一个在处理能力和内存方面更容易?你有证据证明它非常昂贵吗?我们说的是以微秒计的昂贵吗?这也行!我在doLoad函数中添加了一个#sortbutton:$('a#sortbutton').unbind();如果这是更好的生活,那么这就是solution@Marko和@Town:Check。转到“注意事项”标题。我看不到有任何东西表明在这种情况下使用live()
会显著降低性能@马克:我想你喜欢用哪一种都行。当然要改变你的选择器-a#sortbutton
不必要的沉重。你有证据证明它非常昂贵吗?我们说的是以微秒计的昂贵吗?这也行!我在doLoad函数中添加了一个#sortbutton:$('a#sortbutton').unbind();如果这是更好的生活,那么这就是solution@Marko和@Town:Check。转到“注意事项”标题。我看不到有任何东西表明在这种情况下使用live()
会显著降低性能@马克:我想你喜欢用哪一种都行。不过,一定要更换选择器-sortbutton
不必要地沉重。