kukaew
@kukaew

Как в js поменять событие click?

Здравствуйте, братцы. Я очень глупый в js, мне нужно на пальцах объяснить, как нужно поменять событие клик, Спасибо.
$('.spoiler_links').click(function(){
  $(this).nextAll('.clsbody').toggle(0);
  $(this).nextAll('.spoiler_body').toggle(0);
   return false;

$(document).ready(function(){
    $("#te").toggle(   
	  function () {       
                  $("#te").text('Заголовки');   
		  $('.clsbody').show(0);
		  $('.spoiler_body').show(0);
/*   Меняем $('.spoiler_links').click(function(){ */ ;
 }, 	    	    
	  function () {
		 $('.spoiler_body').hide(0);
		 $('.clsbody').show(0); 
	         $("#te").text('Свернуть');	
/*   Возвращаем исходную $('.spoiler_links').click(function(){ */ ;
}
    ); });
  • Вопрос задан
  • 343 просмотра
Решения вопроса 1
PretorDH
@PretorDH
HTML5, CSS3, PHP, JS - люблю в чистом виде.
/* Устанавливаем */
$('.spoiler_links').on('click.spoiler1', function(){ ... });
/*   Меняем on click.spoiler1 на on click.spoiler2 */ ;
$('.spoiler_links').off('click.spoiler1').on('click.spoiler2',function(){ ... });
/* Убираем все*/
$('.spoiler_links').off('click');


Поробуй переделать код
function SpoilerDef(){
  $(this).nextAll('.clsbody').toggle(0);
  $(this).nextAll('.spoiler_body').toggle(0);
  return false;
}
function SpoilerUniq(){
  ...
};
$('.spoiler_links').on('click.spoiler',SpoilerDef);

$(document).ready(function(){
  $("#te").toggle(   
    function () {       
      $("#te").text('Заголовки');   
      $('.clsbody').hide(0);
      $('.spoiler_body').show(0);
      $('.spoiler_links').off('click.spoiler').on('click.spoiler',SpoilerUniq);
 }, 	    	    
    function () {
     $('.spoiler_body').hide(0);
     $('.clsbody').show(0); 
     $("#te").text('Свернуть');	
     $('.spoiler_links').off('click.spoiler').on('click.spoiler',SpoilerDef);
});
});


Но по идее должно быть по другому, значительно проще:
$(document).ready(function(){
 function SpoilerLink(e){
    ...
    e.stopPropagation();
    e.preventDefault();
 };
 $("#te").toggle(      // Возможно здесь нужно добавить к селектору ',.spoiler_links'
    function () {       
      $("#te").text('Заголовки');   
      $('.clsbody').hide(0);
      $('.spoiler_body').show(0);
      $('.spoiler_links').on('click.spoiler',SpoilerLink);
    }, 	    	    
    function () {
     $('.spoiler_body').hide(0);
     $('.clsbody').show(0); 
     $("#te").text('Свернуть');	
     $('.spoiler_links').off('click.spoiler');
    });
});

Селектор добавь если .spoiler_links лежат вне спойлера и при первом клике по ним должен вызывается спойлер.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kukaew
@kukaew Автор вопроса
А ларчик просто открывался.) Всунул изначальное условие внутрь и заработало. Только не on/off поставил, а bind/unbind. Спасибо вам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы