2015-04-29 2 views
1

Я пытаюсь вызвать событие click для тега привязки внутри 'li'. когда вы нажимаете «li», я хочу вызвать тег внутри этого «li». мои html и jQuery приведены ниже. ниже jquery, показывая эту ошибку.jquery trigger click event для тега 'a'

"слишком много рекурсии .."

<li><a href="link">link text</a></li> 


$(document).ready(function(){ 
$("#menu-top li").click(function(){ 
    $(this).children('a').click(); 
}); 
}); 

пожалуйста, помогите мне. благодаря

ответ

0

Используйте «находка» вместо «детей»

$(document).ready(function(){ 
$("#menu-top li").click(function(){ 
    $(this).find('a').click(); 
}); 
}); 
+0

благодаря ЖЭКа, но та же ошибка, показывая на «найти» – shfkktm

0

вызова event.stopPropagation() для вызова нажмите рекурсивно щелкнув завещанию вызвать щелчок для родительского ли. Это снова вызовет щелчок якоря, который приведет к рекурсивному вызову.

Live Demo

$(document).ready(function() { 
     $("#menu-top li").click(function (event) { 
      alert("li clicked"); 
      $(this).children('a').click();  
     }); 
     $("#menu-top li a").click(function (event) { 
      //your code 
      alert("a clicked"); 
      event.stopPropagation();   
     }); 
    }); 
+0

не работает. :( – shfkktm

+0

Я применил это изменение, теперь ошибка не отображается, но триггер не работает! – shfkktm

+0

Проверьте демонстрационную версию live, если это то, что вы пытаетесь? – Adil

0

Добавьте это в вашем коде:

$("#menu-top li a").click(function(e){ 
e.stopPropagation(); 
}); 

Это предотвратит событие щелчка размножить от дочернего элемента к родительскому элементу Ли.

2

используйте событие trigger!

<li><a href="link">link text</a></li> 

$(document).ready(function(){ 
$("#menu-top li").click(function(){ 
    $(this).children('a').trigger('click'); 
}); 
}); 

Любые обработчики событий с приложением .on() или один из его методов быстрого доступа срабатывает, когда происходит соответствующее событие. Они могут быть запущены вручную, однако, с помощью метода .trigger(). Вызов .trigger() выполняет обработчики в том же порядке, как они были бы, если событие были вызваны естественным пользователем

jQuery Trigger Event