Событие jQuery только для первого именованного элемента - PullRequest
3 голосов
/ 04 февраля 2010

У меня есть гиперссылки, все они названы «mylink». Все они должны запускать одно и то же событие, но на самом деле срабатывает только первый элемент с именем mylink. Мой код выглядит следующим образом:

 $(document).ready(function() { 
        $("#formID").validationEngine() 
        $('#mylink').click(function(e){ 
           var goto = $(this).attr('href'); //get the url 
           $.ajax({ 
              url: goto 
           }); //execute the href 
           e.preventDefault(); //prevent click
           $('#mylink').parent().parent().fadeOut("slow");
        }); 
    })

Куда я иду не так?

Ответы [ 4 ]

7 голосов
/ 04 февраля 2010

Вы не можете повторно использовать значение "id". Данный «идентификатор» может быть использован только один раз на странице.

Если вам нужно воздействовать на несколько элементов, используйте компонент «класс»:

<div id="uniqueString" class="makeMeMoo makeMePurple makeMeClickable">
  <!-- whatever -->
</div>
5 голосов
/ 04 февраля 2010
$(function(){
  $("#formID").validationEngine(); // don't forget your semi-colons
  $(".mylink").click(function(e){  // ID's should be unique, use classes instead
    e.preventDefault();
    $.ajax({ url: $(this).attr("href") });
    $(this).parent().parent().fadeOut("slow"); // refer to this as 'this'
  });
});
2 голосов
/ 04 февраля 2010

Вы должны изменить их на класс.

Читать это .

1 голос
/ 04 февраля 2010

Я не знаю, что это намного эффективнее, но пока вы там, может быть неплохо ссылаться и на эту ссылку по элементу (# mylink), иначе jquery мог бы искать весь документ для класса.

 $('a.mylink').click(function(e) { 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...