如何针对特定的元素计数,而不是对选择器选中的元素集合累计数.看代码吧:<cite class="manage_tpl">
<a href="javascript:;" rel="edit">编辑</a>
<a href="javascript:;" rel="filter">删除</a>
<a href="javascript:;" rel="digg">推荐</a>
<a href="javascript:;" rel="share">分享</a>
</cite>
<div class="tpl_board hid"></div>
$('.manage_tpl a').toggle(function(){
$('.tpl_board').removeClass('hid');
},
function(){
$('.tpl_board').addClass('hid');
});
我这样操作发现的问题:
如果点<分享>,第一次显示tpl_board,第二次隐藏,第三次显示,第四次隐藏.看上去不错.刷新后:
如果点第一次点<分享>tpl_board显示,第二次点<推荐>tpl_board显示,第三次点<推荐>tpl_board隐藏,第四次点<分享>.没反应
<a href="javascript:;" rel="edit">编辑</a>
<a href="javascript:;" rel="filter">删除</a>
<a href="javascript:;" rel="digg">推荐</a>
<a href="javascript:;" rel="share">分享</a>
</cite>
<div class="tpl_board hid"></div>
$('.manage_tpl a').toggle(function(){
$('.tpl_board').removeClass('hid');
},
function(){
$('.tpl_board').addClass('hid');
});
我这样操作发现的问题:
如果点<分享>,第一次显示tpl_board,第二次隐藏,第三次显示,第四次隐藏.看上去不错.刷新后:
如果点第一次点<分享>tpl_board显示,第二次点<推荐>tpl_board显示,第三次点<推荐>tpl_board隐藏,第四次点<分享>.没反应
$('.tpl_board').toggleClass('hid');
}这才是toggleClass的正统用法
不是很明白你的意思你上面写的代码就是对每个a标签做单独的toggle,事件状态独有,并不共享我后面写的那个是针对所有的a标签共享了状态了
var action=$(this).attr('rel');
var eleID=action+Math.floor(Math.random()*10000+1); $('.tpl_board').removeClass('hid').attr('id',eleID).parents('.tpl_container').addClass('if_focus');
if(action=='filter') $.halobox_filter(eleID);
if(action=='digg') $.halobox_digg(eleID);
if(action=='share') $.halobox_share(shareset,eleID); },
function(){
$('.tpl_board').addClass('hid').parents('.tpl_container').removeClass('if_focus');
});
<script type="text/javascript">
$(function(){
$('.manage_tpl a').click(function(){
var board=$('.tpl_board');
var action=$(this).attr('rel');
if(board.attr("rel")!=action){
board.show().attr("rel",action);
var eleID=action+Math.floor(Math.random()*10000+1);
board.attr('id',eleID).html($(this).html());//.parents('.tpl_container').addClass('if_focus');
if(action!='edit'){
eval("$.halobox_"+action+"(eleID);")
}
}else{
board.hide().removeAttr("rel");//.parents('.tpl_container').removeClass('if_focus');
};
})
})$.halobox_filter=function(a){
alert(a)
}
$.halobox_digg=function(a){
alert(a)
}
$.halobox_share=function(a){
alert(a)
}
<script>
<cite class="manage_tpl">
<a href="javascript:;" rel="edit">编辑</a>
<a href="javascript:;" rel="filter">删除</a>
<a href="javascript:;" rel="digg">推荐</a>
<a href="javascript:;" rel="share">分享</a>
</cite>
<div class="tpl_board hid"></div>
if(action=='share') $.halobox_share(shareset,eleID);
这个是两个参数的。那就不能那样偷懒了,或者将参数统一成数组,然后再那样偷懒
$(this).click(function(){
if($('.tpl_board').hasClass('hid')){
$('.tpl_board').removeClass('hid');
} else {
if($(this).attr('rel')==$('.tpl_board').attr('id').replace(/\d+/g,'')){
$('.tpl_board').addClass('hid');
}
}
var action=$(this).attr('rel');
var eleID=action+Math.floor(Math.random()*10000+1);
$('.tpl_board').attr('id',eleID);
if(action=='filter') $.halobox_filter(eleID);
if(action=='digg') $.halobox_digg(eleID);
if(action=='share') $.halobox_share(shareset,eleID);
});
});
你把它移到
if($('.tpl_board').hasClass('hid')){
里面岂非更好?
var a=!0;
if($(this).attr('rel')==$('.tpl_board').attr('id').replace(/\d+/g,'')){
$('.tpl_board').addClass('hid');
a=!1;
}
if(a){
var action=$(this).attr('rel');
……
}