jQuery addClass 定位正确的元素 - 但有时只应用类
jQuery addClass targeting correct element - but only applying class sometimes
对于上下文 - 我目前正在开发一个非常基本的Rails应用程序,该应用程序旨在根据输入到表单中的参数吐出HTML模板。但是,我目前遇到了一个非常奇怪的问题。我正在使用 Bootstrap 3,并且有一个包含下拉子菜单的导航 - 因为 Bootstrap 从 Bootstrap 3 中删除了此功能,所以我不得不从这里借用代码来让它工作。
在JSFiddle中,它工作得很好,所以创建一个没有意义;事实上,在我的静态信息页面上,它工作得很好。在每隔一页上,它大约 10% 的时间工作,通常是在刷新后直接工作,其余时间没有响应。我已经检查了Firebug中发生的事情,并且正在针对正确的元素(Firebug通过以黄色突出显示来显示(,但并不总是向其添加"open"类。
我完全不知所措。这是引导程序的事情吗?轨道的事情?为什么它有时有效?!
编辑 - 这是有问题的jQuery。真的非常基本。
$('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
event.preventDefault();
event.stopPropagation();
$(this).parent().toggleClass('open');
});
好的,这可能需要多次尝试,因为我无法测试更改。
$('ul.dropdown-menu [data-toggle=dropdown]')
是一个 jquery 选择器,用于选择[data-toggle=dropdown]
元素,这些元素是具有类 dropdown-menu
的ul
元素的子元素。
这最终不会选择任何内容,因为类dropdown-menu
没有ul
元素。
我认为您想要以下内容:
$('.dropdown-toggle[data-toggle=dropdown]').on('click', function(event) {
event.preventDefault();
event.stopPropagation();
$(this).parent().toggleClass('open');
//alert('clicked');
//console.log('clicked');
});
通知:
- 没有<ul>
标签。您可以使用<a>
标签,但这不是必需的。
- 类和[data-toggle]
之间没有空格,因为它们是同一个元素。
要对其进行测试,您可以取消注释警报或控制台日志行。如果它正常工作,它应该在每次单击时提醒您一次,以更改菜单状态。
测试选择器
您可能会发现有用的方法是在浏览器控制台中使用jquery选择器。打开控制台并发送命令,例如 $('.dropdow-toggle')
.它将显示该选择器选择的所有元素。你可以通过这种方式根除很多问题。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在MVVM视图模型中处理应用程序范围的元素
- 将jQuery事件应用于所有类元素
- HTML 标记未在 AngularJS ckEditor 中应用,而是在 Ediator 中显示 HTML 元素标记代码
- 如何在使用jQuery应用display:none后正确显示元素
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- 如何在AJAX驱动的应用程序中优化元素绑定
- 动画功能不应用于每个元素
- 将jquery函数动态应用于添加的元素
- 如何使用javascript检查事件是否应用于元素
- 通过应用自定义 css 类禁用 html 输入元素
- AngularJS - 在第一个可见元素上应用 CSS 类(Preferred No JQuery)
- getSelection()只能应用于某个元素(而不是整个文档)
- 在将ajax内容应用到元素后执行js函数
- 如何将此函数应用于以下JsonML中的每个匹配元素
- 点击时在元素上应用css样式,独立于父级
- 将随机类应用于元素
- jQuery show/fadeIn不将display:block应用于隐藏的父元素内的子元素-仅限FireFox
- 未应用元素上的动画
- 是否有任何方法可以在应用元素后将fitVids()从元素中删除?