Jquery修改的选择器类没有被拾取
Jquery modified selector class not being picked up
我在构建一些jquery时遇到了麻烦,这些jquery捕获了一个在前一个事件之后被修改过的选择器
例如,我有一些html看起来像这样:
<div class='1'>test</div>
如果我用下面的命令点击它:
$(".1").click(function(){
alert('found 1!');
$(this).attr('class', '2');
});
警报工作,当我检查元素时,类已切换为'2'
现在,当我再次点击它时,使用以下命令:
$(".2").click(function(){
alert('found 2!');
$(this).attr('class', '1');
});
我还是被发现了!作为警告。
是什么我尝试不可能的原因,我做错了还是有更好的方法去做?谢谢!
您需要使用jquery .on()(或.delegate())函数来绑定动态更新元素的事件。
如下代码所示,
$(".1").on("click", function(){
alert('found 1!');
$(this).attr('class', '2');
});
$(".2").on("click",function(){
alert('found 2!');
$(this).attr('class', '1');
});
.click()仅在执行时绑定。您要查找的是。live()或。on()。我将使用jQuery 1.7的.on()语法:
$(document).on("click", ".1", function() {
console.log('1 clicked');
$(this).attr('class', '2');
});
$(document).on("click", ".2", function() {
console.log('2 clicked');
$(this).attr('class', '1');
});
当你这样做的时候:
$(".1").click(function()
您绑定到一个特定的DOM元素。一旦它被绑定,对象上的类就不再重要了。事件处理程序绑定到对象本身。jQuery执行该语句的方式是,它找到所有具有class="1"
的DOM对象,并为它们设置一个事件侦听器。
如果你想要事件处理程序来处理页面的动态变化,那么你需要使用jQuery的.live()
或.delegate()
(jQuery 1.6或之前)或jQuery的.on()
(jQuery 1.7+)。
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery最近父级的数据属性选择器
- 为什么不'在JQuery中找到第二个css选择器的工作
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- jquery IE7中的第n个选择器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 动态修改一个元素,使其与给定的选择器匹配
- jQuery日期[时间]选择器-如何保存时间范围(+修改日期格式)
- 修改元素属性后,Jquery 选择器不起作用
- Javascript 文件修改了未从中调用它的 html 文件?Jquery 选择器
- 使用JavaScript修改CSS选择器:之后
- 修改DOM后,jQuery选择器不工作
- Jquery修改的选择器类没有被拾取
- jQuery选择器不检测修改的元素
- 修改sencha中的CSS psuedo选择器样式
- 可以修改jQuery id选择器