我正在尝试使用bootstrap创建一个新的wordpress模板。下拉菜单无法正常运行。第二次点击后,它显示:none。 我试图解决它,但我不能! 这是我的网站地址:check out the services that has submenu
这也是我的代码:
<li id="menu-item-286" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-286 dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Services <b class="caret"></b></a>
<ul class="dropdown-menu">
<li id="menu-item-228" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-228">
<a href="http://seoirvine.co/business-directories-irvine/" class="dropdown-toggle" data-toggle="dropdown">Business Directories</a>
</li>
<li id="menu-item-231" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-231">
<a href="http://seoirvine.co/ppc-optimization-irvine/" class="dropdown-toggle" data-toggle="dropdown">PPC optimization</a>
</li>
<li id="menu-item-232" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-232">
<a href="http://seoirvine.co/press-release-and-blogs-irvine/" class="dropdown-toggle" data-toggle="dropdown">Press Release and Blogs</a>
</li>
<li id="menu-item-234" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-234">
<a href="http://seoirvine.co/seo-sem-irvine/" class="dropdown-toggle" data-toggle="dropdown">SEO & SEM Irvine</a>
</li>
<li id="menu-item-238" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-238">
<a href="http://seoirvine.co/social-media-marketing-irvine/" class="dropdown-toggle" data-toggle="dropdown">Social Media Marketing</a>
</li>
<li id="menu-item-239" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-239">
<a href="http://seoirvine.co/video-irvine/" class="dropdown-toggle" data-toggle="dropdown">Video Blogging</a>
</li>
</ul>
</li>
答案 0 :(得分:6)
问题是,当下拉列表切换回来时,style="display: none;"
会附加到<li id="menu-item-286">
。
我不认为您的代码有任何问题,而是考虑到其他JS的数量,可能存在冲突。
我尝试删除“mootools.js”并解决了问题。
答案 1 :(得分:4)
在我的情况下,原型.js与bootstrap.js和jquery.js一起运行导致了这个问题。
以下是对问题的讨论:https://github.com/twbs/bootstrap/issues/6921。看起来它现在是一个“不会修复”的问题,并且如果你不想专门使用jQuery,那么就有一个ProtstJS的Bootstrap分支。
我最好的解决方案是应用CSS display:block !important;
或inline-block
,具体取决于您使用元素的元素,该元素将覆盖Prototype应用的display:none;
。
我希望有帮助
答案 2 :(得分:3)
我有更新bootstrap.js行号777
function clearMenus() {
$(backdrop).remove()
$(toggle).each(function (e) {
var $parent = getParent($(this))
if (!$parent.hasClass('open')) return
$parent.trigger(e = $.Event('bs.dropdown'))
if (e.isDefaultPrevented()) return
$parent.removeClass('open')
})
}
这解决了问题
答案 3 :(得分:3)
更好的解决方案是在您的网页上添加一小段Javascript。
if (MooTools != undefined) {
var mHide = Element.prototype.hide;
Element.implement({
hide: function() {
if (this.hasClass("deeper")) {
return this;
}
mHide.apply(this, arguments);
}
});
}
而不是更深层次的&#34;你可以把更深层次的&#34;更深层次的&#34;。这是一个更清洁的解决方案因为 - 你不必删除Mootools(我想有些功能需要Mootools才能工作) - 您不必修改Boostrap代码(如果更新Bootstrap脚本,您肯定会失去修改)。
实际上我遇到了Joomla 3的相同问题,它为一些插件加载了Mootools,我在我的模板上添加了这段代码。
希望这有帮助。
答案 4 :(得分:1)
尝试这样做。
在HTML中
<ul id="myTab" class="nav nav-tabs">
<li class="active"><a href="#link1" data-toggle="tab">Link1</a></li>
<li><a href="#Link2" data-toggle="tab">Link1</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="link1">
LINK1
</div>
<div class="tab-pane fade" id="web_design">
LINK2
</div>
</div>
JavaScript中的
window.addEvent('domready',function() {
Element.prototype.hide = function() {
$(function () {
$('#myTab li:eq(1) a').tab('show');
});
};
});
答案 5 :(得分:0)
您可能包含了MooTools More模块&#34; Element.Shortcuts&#34; (或者它作为一种依赖而被拉入)。单击Bootstrap导航选项卡时,它会调用jquery.js库中的element.hide()调用。因为&#34;隐藏&#34;方法已被MooTools添加到元素中,并设置display =&#34; none&#34;,您的标签消失。
我实施的修复是通过添加&#34; MT&#34;来改变MooTools Element.implement中的方法名称:
Element.implement({
isDisplayedMT : function() {
return this.getStyle('display') != 'none';
},
isVisibleMT : function() {
var w = this.offsetWidth, h = this.offsetHeight;
return (w == 0 && h == 0) ? false : (w > 0 && h > 0) ? true : this.style.display != 'none';
},
toggleMT : function() {
return this[this.isDisplayedMT() ? 'hide' : 'show']();
},
hideMT : function() {
var d;
try {
// IE fails here if the element is not in the dom
d = this.getStyle('display');
} catch (e) {
}
if (d == 'none')
return this;
return this.store('element:_originalDisplay', d || '').setStyle('display', 'none');
},
showMT : function(display) {
if (!display && this.isDisplayedMT())
return this;
display = display || this.retrieve('element:_originalDisplay') || 'block';
return this.setStyle('display', (display == 'none') ? 'block' : display);
},
swapClassMT : function(remove, add) {
return this.removeClass(remove).addClass(add);
}
});
然后我在MooTools中搜索/替换了更多这些方法并更新了名称。
我现在可以使用Bootstrap选项卡导航而不更改该代码,仍然使用新名称调用MooTools便捷快捷方式。
答案 6 :(得分:0)
这是解决方案
只需转到prototype.js并找到代码
hide: function(element) {
element = $(element);
element.style.display = 'none';
return element; },
并替换为
hide: function(element) {
element = $(element);
if(!isBootstrapEvent)
{
element.style.display = 'none';
}
return element; },
它为我工作..