2012-05-11 20 views
1

同じクラスの2つのdivセクションがあり、同じulliaも同じです。同じクラス名を持つdivの1つのjQueryクリックイベント

私のコードに2つのjQueryクリックイベントがあります。 Googleをクリックすると、両方のjQueryのクリックイベントが発生します。しかし、私はその両方を望んでいません、ただ一つです。これをどのように達成するのですか?

たとえば、Googleがクリックされた場合、そのjQueryのクリックイベントではなく、何かを実行したいとします。これらは、私が働いているDOM要素です:

<div class = "abc"> 
<ul> 
    <li class="year_"><a href="www.google.com">google</a></li> 
</ul> 
</div> 
<div class ="abc"> 
<ul> 
    <li><a href="www.yahoo.com>yahoo</a></li> 
</ul> 
</div> 

hrefので、私はそれに私のセレクターをベースにすることはできません変更される場合があります。私が従っているコード。

$('div.abc ul li[class^="year_"] a').click(function(){ 
    //do something 
}); 

$('div.abc ul li a').click(function(){ 
    //do something 
}); 
+1

各リンクに一意のIDを追加するだけで、それらのセレクタをはるかに簡単にIMOで読むことができます。 –

+3

'ul。 '実際に働く?それは少し奇妙なようです... –

+2

jQueryの['$ .is()'](http://api.jquery.com/is/)または['$ .not()']( http://api.jquery.com/not/)は、おそらく1つのハンドラであっても、便利かもしれません。 –

答えて

5

あなたは "year_" クラスで李を見つけ、条件文を行うことができます:

$('div.abc ul li a').click(function(){ 
    if ($(this).parents('li').is('[class^="year_"]')){ 
     //do something 
    } else { 
     //do something else 
    } 
}); 

jsfiddleを参照してください。

+0

これは質問に取り組むための適切な方法です。 +1 – Ohgodwhy

+0

私は同意します(上記のコメントを参照してください):http://jsfiddle.net/EFkUp/(そして私は編集を見ました... '))') –

+1

迷いの 'ul.'ピリオドセレクタは、サンプルコードも同様です。 –

関連する問題