我只想在点击链接时切换一些元素:
这就是我的尝试方式(但我真的不认为这个问题对于事件函数回调中的内容有多重要):
/* mostrar exceso de comentarios a peticion del usuario*/
$('.toggleComments').click(function(){
console.log('.toggleComments');
if($(this).parents('.helpContent').find('.commentHideble:visible').length > 0){
$(this).text('+ <?=get_texto_clave('show_old_comments')?>').removeClass('toggleCommentsActive').append(' ('+$(this).parents('.helpContent').find('.commentHideble:not:visible').length+'+)');
}else{
$(this).text('- <?=get_texto_clave('hide_old_comments')?>').addClass('toggleCommentsActive');
}
$(this).parents('.helpContent').find('.commentHideble').slideToggle(100);
});
我甚至尝试了一个布尔值,但给了我相同的结果
/* mostrar exceso de comentarios a peticion del usuario*/
var ctoggle = false;
$('.toggleComments').click(function(){
if(ctoggle == false){
ctoggle = true;
console.log('.toggleComments');
if($(this).parents('.helpContent').find('.commentHideble:visible').length > 0){
$(this).text('+ <?=get_texto_clave('show_old_comments')?>').removeClass('toggleCommentsActive').append(' ('+$(this).parents('.helpContent').find('.commentHideble:not:visible').length+'+)');
}else{
$(this).text('- <?=get_texto_clave('hide_old_comments')?>').addClass('toggleCommentsActive');
}
$(this).parents('.helpContent').find('.commentHideble').slideToggle(100);
ctoggle = false;
}
});
为什么单击会触发两次日志?
答案 0 :(得分:1)
看起来你在页面中有两次相同的jQuery块。两个绑定=两个火焰。
第499和1481行。
答案 1 :(得分:0)
jsfiddle页面会有所帮助,但同时你可以试试这个:
$('.toggleComments').click(function(e){
e.stopPropagation();
console.log('.toggleComments');
if($(this).parents('.helpContent').find('.commentHideble:visible').length > 0){
$(this).text('+ <?=get_texto_clave('show_old_comments')?>').removeClass('toggleCommentsActive').append(' ('+$(this).parents('.helpContent').find('.commentHideble:not:visible').length+'+)');
}else{
$(this).text('- <?=get_texto_clave('hide_old_comments')?>').addClass('toggleCommentsActive');
}
$(this).parents('.helpContent').find('.commentHideble').slideToggle(100);
}
答案 2 :(得分:0)
由于您正在使用类选择器,因此click事件不会在几个元素上冒泡/传播,所有元素都使用toggleComments
类。 e.stopPropagation()
应该对您有所帮助。
preventDefault
会停止点击本身,因此如果元素是超链接,最好不要使用该方法。如果它只是一个div,span或者其他什么,你总是可以返回false。在jQuery中,返回false stop事件Propagation / bubbling 和可以防止默认。