2012-09-01 1 views
0

Я просто хочу, чтобы переключить некоторые элементы при нажатии на ссылку:один щелчок, два щелчка события произвело

Это, как я пытаюсь (Но я действительно не думаю, что это имеет значение много для этого вопроса что внутри функции обратного вызова события):

/* 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; 
    } 
}); 

Почему журнал увольняют дважды нажмите?

+1

Как выглядит HTML-код для этого? Можете ли вы создать jsFiddle? – j08691

+0

Вы загружаете HTML с помощью ajax или что-то в этом роде или просто с обычной загрузкой? – ffffff01

+0

вы можете проверить по http://209.51.221.243/integracion/login.php его синюю кнопку поверх комментариев к сообщению. –

ответ

1

Похоже, что у вас есть один и тот же кусок jQuery дважды на странице. Два связывания - два огня.

Линии 499 и 1481.

+0

Но его единственный раз в моем коде .. (проверено) –

+0

Посмотрите на источник, и вы увидите, что он там дважды. – j08691

+1

OMG файл был импортирован дважды. Спасибо за улов! –

0

jsfiddle страница whould быть полезной, но между тем вы можете попробовать это:

$('.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); 
} 
0

Поскольку вы используете селектор класса, это не маловероятно, что событие щелчка пузырится/распространяющимся на несколько элементов, все с toggleComments класс. e.stopPropagation() должен помочь в вашем случае.

preventDefault останавливает сам клик, поэтому, если элемент является гиперссылкой, лучше не использовать этот метод. Если это просто div, span или что-то еще, вы всегда можете вернуть false. В jQuery возврат false останавливается событие Распространение/барботирование и предотвращает дефолт.

Смежные вопросы