我有切换菜单。代码工作正常,问题是第一次内部有一个跨度但是当我点击菜单时,跨度丢失了。我正在使用此跨度来显示向下箭头。我需要在每次点击时将内部包裹起来,如下面的代码所示。这是我的代码
<div class="col-sm-12 seach-blk">
<a href="#" class="srch-btnnew" id="open-menu">@selectedProductType <span></span></a>
<div id='cssmenu'>
<ul>
<li><a href='#'><span class="product-type">categoryName 1</span></a> </li>
<li><a href='#'><span class="product-type">categoryName 2</span></a> </li>
</ul>
</div>
</div>
Jquery的
$(document).ready(function () {
// Initially hide submenu
$('#cssmenu').hide();
$('#open-menu').click(function (e) {
//Prevent href
e.preventDefault();
// Toggle the menu item
$('#cssmenu').toggle();
});
});
CSS
.srch-btnnew span {
position: absolute;
right: 15px;
background: url(../images/down-arrownew.png) repeat-x;
width: 12px;
height: 9px;
top: 22px;
}
由于
答案 0 :(得分:1)
您正在使用空的html <span></span>
,这就是浏览器可能会删除它的原因。因此,请尝试使用<span> </span>
或者您可以在范围内放置一些文字并使用font-size: 0;
。
同时尝试使用e.stopPropagation()
代替e.preventDefault()
答案 1 :(得分:0)
您的代码运行正常。单击标记时不会删除跨度。
我已在jsfiddle中测试过,找到以下链接
我不确定,也许在您的标签中需要空间(&#39;&amp; nbsp&#39;)否则CSS会影响您的箭头路径
代码:
// Initially hide submenu
$('#cssmenu').hide();
$('#open-menu').click(function (e) {
//Prevent href
e.preventDefault();
// Toggle the menu item
$('#cssmenu').toggle();
});
答案 2 :(得分:0)
未删除<span>
元素。它是内联元素,因此宽度和高度不适用于它。您可以通过将display: inline-block;
添加到样式来将其更改为块元素。
.srch-btnnew span {
display: inline-block; /* <-- Add this to make it a block element */
position: absolute;
right: 15px;
background: url(../images/down-arrownew.png) repeat-x;
width: 12px;
height: 9px;
top: 22px;
}