我试图将'click'事件附加到特定类的所有元素.问题是某些元素位于绑定事件时隐藏的选项卡(display:none)上.(.bind()).似乎当显示这些元素时,事件不再受约束.
$('a.someClass').bind('click', function(){
alert("test");
});
Run Code Online (Sandbox Code Playgroud)
隐藏的元素似乎没有绑定点击事件.如果我选择隐藏的元素:
$('a.someClass:hidden').bind('click', function(){
alert("test");
});
Run Code Online (Sandbox Code Playgroud)
当这些元素不再被隐藏时,似乎没有绑定click事件.有没有人经历过这个?有没有办法将元素绑定到事件,而不管它们的显示属性如何?
谢谢
Max*_*air 58
从jQuery 1.7开始,该.live()方法已被弃用.
您现在可以使用该.on()方法.通过将委托事件附加到运行jQuery时可在HTML中查看的元素.
因此,如果a.someClass在运行jQuery时隐藏,则应将委托事件附加到正文,因此将a.someClass在未来存在可查看元素时运行,例如:
$('body').on('click','input.a.someClass',function(){
alert("test");
});
Run Code Online (Sandbox Code Playgroud)
Dam*_*amb 13
编辑2年后:有些人指出,该Live功能现已弃用(您也可以在链接文档页面的顶部看到).当前版本的正确事件处理程序名称将是On.请参阅Maxim的答案以获得一个好例子.
原始答案:
您是否尝试过使用Live()?
.live('click',function(){/* code */});
Run Code Online (Sandbox Code Playgroud)
?
版本说明:live已在jQuery 1.7中弃用,并在jQuery 1.9中删除.这个答案只适用于比jQuery 1.7更早的jQuery版本
使用委托(注意这是在你取消隐藏之后):
$('body').delegate('.someClass', 'click', function (evt) {
// do something here
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43526 次 |
| 最近记录: |