2009-08-07 3 views
0

Я пытаюсь написать цикл для итерации по каждому якорю в неупорядоченном списке и выполнить действие над изображением внутри якоря. Разметка выглядит так:Пропустить щелкнули элемент в jQuery каждый цикл

<ul> 
    <li><a href="#"><img src="image.png" /></a></li> 
    <li><a href="#"><img src="image.png" /></a></li> 
    <li><a href="#"><img src="image.png" /></a></li> 
</ul> 

Событие клика на любом из якорей должно запускать цикл. У меня есть следующий JS до сих пор:

$("a").click(function(){ 
    $("a").each(function(){ 
     if (THIS IS THE CLICKED ON ANCHOR == TRUE) { 
      // SKIP THIS ITEM 
     } 
     else { 
      $("img",this).actions(); 
     }; 
    }); 
}); 

Я думаю, что нужно просто часть, которая пропускает этот пункт, если он является нажал на якорь, но я не проставление иного подхода.

Я использую jQuery 1.3.2.

Спасибо!

ответ

6

Я думаю, что есть более простой способ:

$("a").click(function() { 
    $("a").not(this).find('img').actions(); 
}); 
+0

Вы правы, это намного более чистая реализация. Спасибо. – Ben

1

Вы можете попробовать:

$("a").click(function(){ 
    var clickedItem = this; 
    $("a").each(function(){ 
     if (this == clickedItem) { 
      // SKIP THIS ITEM 
     } 
     else { 
      $("img",this).actions(); 
     }; 
    }); 
}); 
+0

Спасибо! Я просто понял, что сразу после того, как я спросил. Вы получаете кредит на отправку ответа передо мной. – Ben

0

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

$("a").click(function(){ 
    var clickedOnAnchor = this; 
    $("a").each(function(){ 
     if (clickedOnAnchor == this) { 
      // SKIP THIS ITEM 
     } 
     else { 
      $("img",this).actions(); 
     }; 
    }); 
}) 
+0

Остерегайтесь! Если вы объявляете переменную без ключевого слова 'var' (например,' clickedOnAnchor' в вашем случае), она становится ** глобальной ** переменной. Вы, вероятно, этого не хотите. –

+0

Бен - Я думаю, что это сложнее, чем нужно. См. Мой ответ. – tvanfosson

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