jQuery与可折叠列表冲突
jQuery Conflict with Collapsible List
我目前正在使用一个小的jQuery脚本,包括infra,以使collapsible-list
类的列表可折叠/可扩展。默认情况下,脚本会折叠列表(还有一点CSS,也包括infra,让访问者很容易注意到这一点),然后在访问者单击可扩展元素时展开它。
以下是脚本:
jQuery
jQuery(function($) {
function prepareList() {
$('.collapsible-list').find('li:has(ul)')
.click( function(event) {
if (this == event.target) {
$(this).toggleClass('collapsible-list-expanded');
$(this).children('ul').toggle('medium');
}
return false;
})
.addClass('collapsible-list-collapsed')
.children('ul').hide();
};
$(document).ready( function() {
prepareList()
});
});
CSS
/* Collapsible Lists */
.collapsible-list, .collapsible-list ul, .collapsible-list li {
list-style: none;
}
.collapsible-list .collapsible-list-collapsed:before {
content: "+ ";
font-weight: bold;
color: #00AA00;
}
.collapsible-list .collapsible-list-expanded:before {
content: "- ";
font-weight: bold;
color: #AA0000;
}
CSS是为了完整性而包含的,它的功能完全符合预期。问题在于jQuery(可能还有页面上的其他脚本,我似乎无法将其隔离)。
脚本确实折叠了给定collapsible-list
类的任何列表中除顶层部分外的所有部分,但这就是适当功能的结束。现在,脚本在我的测试环境中(以及在JSFiddle中)的行为与预期一致;然而,一旦脚本在我的网站上实现,列表就会折叠,单击即可展开,但,而不是在单击后保持展开(应该如此),它们会立即再次折叠。很明显,这会使脚本在实现后变得毫无用处,因为collapsible-list
类调用它的任何列表都会使访问者无法使用。
这里有一个链接,指向当前实现它的页面:http://wpmudev.docs.omnifora.com/docs/plugins/wpmu-dev-dashboard/.现在,我确信某个地方存在脚本冲突,但我似乎无法弄清楚是什么脚本冲突。
附加信息
这个网站使用Bootstrap,我怀疑这可能是冲突的根源。
更新我已经缩小了潜在冲突的范围,Bootstrap似乎不是罪魁祸首。这是一个JSFiddle,其列表在两个不同的引导面板设置(嵌套在panel-body
和panel
中)中的行为与预期一致:在此处输入链接描述。
我现在已经设法使列表工作,除了关于格式化。jQuery冲突似乎是由一个脚本调用另一个脚本的方式中的一个轻微错误引起的,这导致collapsible-list.js
文件被加载了两次。这是一个正在工作的JSFiddle:在此处输入链接描述
在单击函数中添加.toggleClass('collapsible-list-collapsed');
可能会起作用。
在处理了几个小时之后,我能够解决冲突:
-
其中一个脚本引用的格式不正确,这导致了对
collapsible-list.js
的两次调用,这导致意外的立即收缩扩展行为。 -
最初的脚本只使用
expanded
和collapsed
作为类,它们与另一组规则交互并导致意外行为;修改后的脚本使用了更具体的类,从而避免了此类冲突。
然后修改CSS:
- 有人认为将
padding: 0;
放在主题的主CSS文件中的ul
和li
元素上是明智的;显然,这很容易被.collapsible-list
的更具体的规则所覆盖
结果是,该页面现在按预期运行:http://wpmudev.docs.omnifora.com/docs/plugins/wpmu-dev-dashboard/.
- 要求输入在数据列表中
- 从javascript创建一个列表
- 如何使用jQuery选择下拉列表的值
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- 如何使用json将对象列表从java转换为javascript
- 区分JSON中的矩阵和列表列表
- jQuery表单添加不适用于下拉列表
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 接受不在列表中的值-引导组合框
- 禁用jQuery中的下拉列表
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- IE8/Javascript冲突?IE8正在开发中冻结整个站点-包括Javascript列表
- jQuery与可折叠列表冲突
- 引导程序下拉列表与jQuery.dropdown冲突
- 剑道UI [下拉列表] - 多个元素中的冲突
- 浏览器缓存与我的 javascript 冲突,以将值添加到列表框
- SharePoint 2013 更新列表项时保存冲突错误
- 1 / 3的下拉列表使用mysql创建冲突