今天早些时候我回答了这个问题。问题是关于切换一个类label
带有 jQuery 的元素。考虑以下 HTML:
<label id="test">Test <input type="checkbox"></label>
以及以下 jQuery:
$("#test").click(function() {
$(this).toggleClass("testClass");
});
当我点击label
我希望testClass
要应用于该元素的类(因为页面加载时它没有该类)。然而,什么也没有发生。亲自看看here。我没有在 IE 中尝试过,但在 Chrome 或 Firefox 中无法正常工作。我相信它会在 IE 中工作,从之前链接的问题来看。
逐步通过toggleClassjQuery 源中的方法,似乎发生的情况是该类立即被添加和删除。
如果您移动input
之外的元素label
,该类按预期添加:
<label id="test" for="cb">Test</label>
<input type="checkbox" id="cb">
你可以看到那个在行动here。所以,我的问题是为什么第一个示例似乎没有在第一次单击时添加类?我是否遗漏了一些明显的东西?
看起来问题源于这样一个事实click
当您有嵌套时,事件被触发两次(从而使切换无效)input
元素。我没有在所有浏览器上测试过,但这似乎发生在 FF8 中。
尝试单击本例中的标签:http://jsfiddle.net/cRnJS/
显然,点击label
元素触发click
其关联的事件input
(这就是检查/取消检查起作用的原因)并且此事件向上冒泡,因此在父级中第二次触发它label
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)