在页面有
<li class="collectTabView"><span class="current">全部收藏</span></li>
<li class="collectTabView"><a href="#">特别关注</a></li>
然后通过JavaScript:
var arrCollectTabView = $(".collectTabView");
for ( var i = 0; i < arrCollectTabView.length; i++) {
(function(i) {
arrCollectTabView[i].onclick = function(){
for ( var i = 0; i < arrCollectTabView.length; i++) {
}
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);
};
})(i);
}
为什么”arrCollectTabView.children()[i].text“报错,把其中的i变成0,1分别就是全部收藏和特别关注,但是我必须要是变量啊,如何修改呢?
------解决方案--------------------
arrCollectTabView[i].onclick = function(){
for ( var i = 0; i < arrCollectTabView.length; i++) {
}
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);
或
arrCollectTabView[i].onclick = function(){
for ( var j = 0;j < arrCollectTabView.length; j++) {
}
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);
------解决方案--------------------
你搞了个空循环
arrCollectTabView[i].onclick = function(){
for ( var i = 0; i < arrCollectTabView.length; i++) {
}
到了这里 i==2 了
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);
------解决方案--------------------
Lz对jQuery的事件机制和DOM操作有待加强喔
再有就是,对jQuery与原生的用法之间不要搞混了
- JScript code
$(".collectTabView").click(function(){ //在这里面,使用$(this)可获取每一个<li class="collectTabView"></li>的DOM结构 var child=$(this).children(); if(child.hasClass('current')){ child.replaceWith('<a href="#">'+child.html()+'</a>'); /* //下面的方式是使用jQuery操作DOM的方式 var links=$('<a>').attr("href","#").text(child.html()); $(this).empty(); $(this).append(links); */ }else{ child.replaceWith('<span class="current">'+child.html()+'</span>'); /* //下面的方式是使用jQuery操作DOM的方式 var span=$('<span>').addClass('current').html(child.html()); $(this).empty(); $(this).append(span); */ } })
------解决方案--------------------
child是一个jQuery对象。之前有和你说过,不要把jQuery和原生的搞混了
jQuery筛选子元素,可以用child.eq(index)来进行
再一个,jQuery的each()方法可以用来遍历所有元素
到现在还没搞明白你到底是想干嘛
你将事件触发放在li的click事件中,如果是想批量替换6个li中。span换成a,a换成span
那么,你这li中的a永远无法生效,你这是要干嘛呢??
- HTML code
<script type="text/javascript"> $(function(){ $(".collectTabView").click(function(){ $(this).parent().find('li').each(function(){ var child=$(this).children(); if(child.hasClass('current')){ child.replaceWith('<a href="#">'+child.html()+'</a>'); }else{ child.replaceWith('<span class="current">'+child.html()+'</span>'); } }) }) }) </script> <div> <ul> <li class="collectTabView"><span class="current">全部收藏1</span></li> <li class="collectTabView"><a href="#">特别关注</a></li> <li class="collectTabView"><span class="current">全部收藏2</span></li> <li class="collectTabView"><a href="#">特别关注</a></li> <li class="collectTabView"><span class="current">全部收藏3</span></li> <li class="collectTabView"><a href="#">特别关注</a></li> </ul> </div>