2016-08-05 7 views
-1
<div class="container"> 
<div class="well"> 
    <h2>Hurry Up!</h2> 
    <ul> 
    <li> 
    <a onclick="clicked()"></a> 
    </li> 
    <li> 
    <a onclick="clicked()"></a> 
    </li> 
    </ul> 
    </div> 
</div> 

上記は、私のHTML構文のサンプルです。私が達成したいのは、 "a"タグがクリックされたとき、 "h2"要素のテキストを探したいときです。Jqueryクリック後の前の要素の選択

たとえば、「a」タグをクリックすると、「Hurry Up!」というテキストが表示されます。のh2はコンソールに表示する必要があります。

私はこれを試してみましたが、その作業はありません:

function clicked(){ 
     var title = $(this).find('h2').text(); 
     console.log(title); 
} 

そしてまた、この:コンソールで

function clicked(){ 
     var title = $(this).parentsUntil('.container').find('h2').text(); 
     console.log(title); 
} 

を、何も、唯一の空白行を表示されません。

私が追加したいのは、これと同じ構文が何度もあります。だから、h2のテキストは、それがクリックされたコンテナのものでなければなりません。そのため、私は 'this'を通して試しています。

+0

この ''のようなパス要素を、としてそれを得ます関数内の引数と、 'this'の代わりにその変数を返します。 – RRK

答えて

0

は試してみてください。この

function clicked(element){ 
 
     var title = $(element).closest('div').find('h2').html(); 
 
     console.log(title); 
 
     alert(title); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
<div class="well"> 
 
    <h2>Hurry Up!</h2> 
 
    <ul> 
 
    <li> 
 
    <a onclick="clicked(this)" href="#">Click 1</a> 
 
    </li> 
 
    <li> 
 
    <a onclick="clicked(this)" href="#"> Click 2</a> 
 
    </li> 
 
    </ul> 
 
    </div> 
 
</div>

+0

私はあなたのコードを試しましたが、 '急いで'と一緒に 'a'要素のテキストも表示しています。 「hur up」のh2テキストしか表示されません。 – crazyboy24

+0

@ user1645734 - 上記のスニペットのように、あなたが提供したものとは異なる何かをしたに違いありません。 'console.log'と' alert'の両方にあります。上記のスニペットを実行して確認しましたか? –

+0

はい、私は直接stackoverflowでそれを実行している、またjsfiddleで試してみました。あなたはそれをここで見ることができますhttps://jsfiddle.net/L4nkqe14/ – crazyboy24

0

これを試してみてください:

<div class="container"> 
<div class="well"> 
    <h2>Hurry Up!</h2> 
    <ul> 
    <li> 
    <a onclick="clicked(this)"></a> 
    </li> 
    <li> 
    <a onclick="clicked(this)"></a> 
    </li> 
    </ul> 
    </div> 
</div> 

function clicked(elem){ 
    var text = $(elem).closest('h2').text(); 
    // text contains Hurry Up! in it 
} 
0

function clicked(element) { 
 
    var title = $(element).closest('ul').prev('h2').text(); 
 
    console.log(title); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="well"> 
 
    <h2>Hurry Up!</h2> 
 
    <ul> 
 
     <li> 
 
     <a onclick="clicked(this)">clicked</a> 
 
     </li> 
 
     <li> 
 
     <a onclick="clicked(this)">clicked</a> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</div>

使用.closest() ULは、あなたがモジュラー答えを探していない場合は、これを試すことができH2

+0

私はあなたのコードを試しましたが、「急いで」「li」テキストも表示しています。 「hur up」というh2テキストのみが表示されます。 – crazyboy24

+0

閉じたタグではないHTMLマークを確認してください – guradio

+0

これをチェックして、すべてのタグが正しく閉じられました。あなたが提供したコードをコピーし、またstackoverflowから直接実行しました。これはliのテキストを表示しています。 – crazyboy24

0

を取得するために.prev()を使用するには:

function clicked(){ 
    var title = $(".well h2").text(); 
    console.log(title); 
    }