对于上下文 - 我目前正在开发一个非常基本的Rails应用程序,该应用程序旨在根据输入到表单中的参数来吐出HTML模板。但是,我目前遇到了真正奇怪的问题。我正在使用Bootstrap 3,并且有一个包含下拉子菜单的导航 - 因为Bootstrap从Bootstrap 3中删除了这个功能,我必须借用here中的代码才能使其正常工作。
在JSFiddle中它很有用,所以创建一个没有意义;事实上,在我static info page上,它很有效。在every other page上,它大约有10%的时间工作,通常直接在刷新后,其余时间没有响应。我已经检查了Firebug中正在进行的操作,并确定了正确的元素(Firebug通过突出显示为黄色显示),但并不总是打开'打开'类添加到它。
我完全不知所措。这是Bootstrap的事吗?一个Rails的事情?为什么有时有效?!
编辑 - 这是有问题的jQuery。真的很基本。
$('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
event.preventDefault();
event.stopPropagation();
$(this).parent().toggleClass('open');
});
答案 0 :(得分:0)
好的,这可能需要多次尝试,因为我无法测试这些变化。
$('ul.dropdown-menu [data-toggle=dropdown]')
是一个jquery选择器,用于选择[data-toggle=dropdown]
个ul
元素子元素dropdown-menu
元素ul
。
由于类dropdown-menu
没有$('.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]
标记,但这是不必要的
- 类和$('.dropdow-toggle')
之间没有空格,因为它们是相同的元素。
要测试它,您可以取消注释警报或控制台日志行。如果它正常工作,它会在每次点击时提醒您一次更改菜单状态。
测试选择器
您可能会发现有用的东西是在浏览器的控制台中使用jquery选择器。打开控制台并发送{{1}}之类的命令。它将显示该选择器选择的所有元素。你可以通过这种方式解决很多问题。