-2

私は 2 つのdiv要素を持っています。最初の div をクリックすると、クリックした div の内側にある他の div が表示されますが、誰が機能するのか理解できません。私の jquery コードは次のとおりです。

jQuery('.infobutton').click(function(){
    var clickedID = jQuery(this).attr('id');
    jQuery(clickedID).children('div').toggle(); 
});

<div class="infobutton" id="infobtn1">
    <div class="content">some content</div>
</div>

私は毎回正しいIDを取得します、私も試しまし.first().parent()、、.children('.content')

jQueryでこれを行うことは可能ですか?

4

3 に答える 3

1

次のような HTML があるとします。

<div id="container" class="infobutton">
    Some content
    <div>Some other content</div>
</div>

それでは、Javascript について説明しましょう。

jQuery('.infobutton').click(function(){

クラスを持つ要素を検索し、ハンドラーinfobuttonを割り当てます。clickこれはうまくいきます。

var clickedID = jQuery(this).attr('id');

idその要素の を variable に入れますclickedID。の値clickedIDは現在containerです。

jQuery(clickedID).children('div').toggle(); 

で jQuery セレクターを実行しますclickedIDここに問題があります。これは に要約できますjQuery('container')containerこれは、ID ではなく、タグ name を持つ要素を探しますcontainer

実際、これらすべての解決策は、ID をまったく使用しないことです。this代わりに、クリックした要素への参照である を使用して jQuery オブジェクトを作成できます。

jQuery('.infobutton').click(function(){
    jQuery(this).children('div').toggle(); 
});
于 2013-11-05T15:50:27.827 に答える
0

イベントハンドラー内thisでは、ハンドラーがアタッチされた要素を参照します

jQuery('.infobutton').click(function(){
    jQuery(this).children('.content').toggle(); 
});

デモ:フィドル

于 2013-11-05T15:48:01.343 に答える
0

これを使う

jQuery('.infobutton').click(function(){
    jQuery(this).children('.content').toggle(); 
});

thisevent 内の現在の要素を参照します。

あなたのコードは次のように機能します

jQuery('#'+clickedID) の代わりに使用jQuery(clickedID)

于 2013-11-05T15:48:19.603 に答える