<div style="float: left" id="my_menu" class="sdmenu">
<div ><span><a href="#" >>>abc </a></span>
<a href="6">-a </a>
<a href="7">-b </a>
<a href="8">-c </a>
</div>
<div class="collapsed"><span><a href="2" >>>def</a></span>
</div>
</div>
如上代码
用js判断div内是否有子类的代码
如果有子类,就把span里面的href="#"替换为空
如果没有子类 span里面的href="#"则不变
<div ><span><a href="#" >>>abc </a></span>
<a href="6">-a </a>
<a href="7">-b </a>
<a href="8">-c </a>
</div>
<div class="collapsed"><span><a href="2" >>>def</a></span>
</div>
</div>
如上代码
用js判断div内是否有子类的代码
如果有子类,就把span里面的href="#"替换为空
如果没有子类 span里面的href="#"则不变
如果只是要改掉span的href,完全可以用getElementsByTagName方法来获得所有的span标签,再循环一一判断并修改。
abc是大类 a、b、c是小类
那么这个abc的的链接href="#"就替换成空的
第二个def 是没有小类的
那么这个def的 链接href=“#”就保持原样
但是如果有子分类的话 点击abc大类 直接跳到大类的链接去了
不能展开了
此方法在firefox上可能会出现TextNode的节点,你只需要判断它的nodeType是不是1就行了。
function getNextSibling(node){
var nextSibling = node.nextSibling;
while(nextSibling && nextSibling.nodeType !== 1){
nextSibling = nextSibling.nextSibling;
}
return nextSibling;
}
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>function test(){
$("#my_menu > div").each(function(){//查找ID为my_menu的DIV下的所有子DIV
var count = $(this).children("a").length;
if(count > 0){//判断DIV是否包含A元素
$(this).children("a").attr("href","");
}
});
}
var getNextSibling = function(node){
var nextSibling = node.nextSibling;
while(nextSibling && nextSibling.nodeType !== 1){
nextSibling = nextSibling.nextSibling;
}
return nextSibling;
}
var spans = document.getElementById('my_menu').getElementsByTagName('span');
for(var i = 0,span;span = spans[i];i++){
if(!getNextSibling(span)){
span.firstChild.href = "#";
}
}
};
change();