2012-05-11 24 views
1

同じクラスのセクションdivセクションが2つあり、ulとliとaも同じです。 jquery clickイベントがあります。リンクがクリックされると、jqueryのクリックイベントの両方が発生します。しかし、私は両方を望んでいない、ただ1つが解雇される。どのようにこれを達成するのですか?これは私が持っているドーム構造です。は同じクラス名を区別します

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

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

hrefが変更される可能性があります。そのため、私のセレクタを基にすることはできません。

おかげ

+1

を試すことができますか? – jimw

+0

@jimwは必要ありません。 $ 1をベットすれば、イベントリスナーがどのようにアタッチされているのでしょうか。あなたのJSコードを見せてください。 – Madbreaks

+0

あなたはおそらく正しいでしょうし、コードを表示するのは間違いありません。 – jimw

答えて

3

つだけはあなただけで何が起こっているのか、解釈ミスされ、解雇されています。試してみてください:

$("div.a a").click(function(e){ 
    e.preventDefault(); 
    alert(this.href); 
}); 

コードを投稿すると、問題を解決する手助けをすることができます。

0

first()メソッドを使用して最初の1つを起動し、last()メソッドを使用して最後の()メソッドを起動できます。その向こうには、固有のIDを実装するか、別のクラスを適用する必要があります。

別のクラスを使用して
http://api.jquery.com/first-selector/ 

http://api.jquery.com/last-selector/ 

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

<div class ="a yahoo"> 
<ul> 
<li><a href="www.yahoo.com>yahoo</a></li></ul></div> 
0

あなたは正しいhref属性に1をターゲットにすることができます:

$('a[href^="wwww.google"]').on('click', function(e) { 
    e.preventDefault(); 
    alert('This is not the Google you are looking for...'); 
}); 

hrefが変更された場合、それらを区別することはできません。ID、クラスまたは構造の違いはありません。したがって、DOM内のインデックスをチェックすることが唯一の選択肢です。

$('.a > ul > li > a').on('click', function(e) { 
    e.preventDefault(); 
    var A = $(this).closest('.a').index(); 
    if (A==3) { 
     alert("this is the one I'm lookin for"); 
    } 
}); 
0

あなたがそれらを個別のIDを与えることができ、この

$(function(){ $('.a').click(function(){ var a = $(this).val(); alert(a); }); }); 
関連する問題