2017-02-28 6 views
1

ボタンを押したときにクローンされたdivから特定のh3を取得しようとしています。私は正確に同じ値でクローンされたdivを10個持っているので、私はちょうど押された特定のボタンからh3を得ることができるようにしたい。複数のクローンされたdivから特定のh3を取得

$("body").on("click", ".btnFavorite", function() { 
 
    var favoriteMovieTest = $(this).parent().find("h3"); 
 
    alert(favoriteMovieTest); 
 
}); 
 
for (var i = 0; i < 10; i++) { 
 
    $(".search-result:first").clone().appendTo(".search"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="search"> 
 
    <div class="search-result"> 
 
    <h3>Titel(year)</h3> 
 
    <input type="submit" value="Favoritfilm" class="btn btn-warning btnFavorite"> 
 
    <input id="btnArkiv" type="submit" value="Arkiv" class="btn btn-warning"> 
 
    </div> 
 
</div>

+1

私はあなたが 'VAR favoriteMovieTest = $( "この")を変更したいと思う親()( "H3")を見つける;' VAR favoriteMovieTest = $ 'に(この).parent()。find( "h3"); 'あなたのコードは存在しない html要素を探しています。 – Schleis

+0

ありがとう、これを編集します。しかし、それでも私の問題は揺れません。また、なぜ人々はdownvotingです... – Amar

答えて

1

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

:それはforループの前に実行された場合、forループで作成された要素は、イベントハンドラに添付されませんので、forループ後にイベントハンドラをアタッチするためのコードを保管してください。

for (var i = 0; i < 10; i++) { 
 
    $(".search-result:first").clone().appendTo(".search").find("h3").append(" "+i); 
 
} 
 

 
$(".btnFavorite").on("click", function() { 
 
    var favoriteMovieTest = $(this).siblings("h3")[0]; 
 
    console.log(favoriteMovieTest); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="search"> 
 
    <div class="search-result"> 
 
    <h3>Titel(year)</h3> 
 
    <input type="submit" value="Favoritfilm" class="btn btn-warning btnFavorite"> 
 
    <input id="btnArkiv" type="submit" value="Arkiv" class="btn btn-warning"> 
 
    </div> 
 
</div>

+0

これは私のコードで動作していないようですが、これも最初の要素[0]を取得しないでしょうか? – Amar

+0

いいえ、あなたのコードはすべて同じ要素を持っているので、毎回同じ要素が得られていると思います。いくつかの違いを示すためにいくつかの修正を加えてみましょう。 – vatz88

+0

サンプルコードにはh3が1つしかありません。 jqueryは配列を返し、h3を与える[0]を使用する要素をターゲットにします。あなたは 'debugger'を試して、あなたに戻ってきた' $(this) 'が何かをテストし、コンソールでそれを再生して問題を解決することができます。 – Rikin

1

あなたはこのようにそれを行うことができます:あなたが見ることができるように

for (var i = 0; i < 10; i++) { 
 
    $(".search-result:first").clone().appendTo(".search"); 
 
} 
 

 
$(".btnFavorite").on("click", function() { 
 
    var favoriteMovieTest = $(this).closest("div").find("h3"); 
 
    favoriteMovieTest.css('color','red');  
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="search"> 
 
    <div class="search-result"> 
 
    <h3>Titel(year)</h3> 
 
    <input type="submit" value="Favoritfilm" class="btn btn-warning btnFavorite"> 
 
    <input id="btnArkiv" type="submit" value="Arkiv" class="btn btn-warning"> 
 
    </div> 
 
</div>

iは、ボタンからその特定のh3の要素を取得します。 これで好きなことをやり遂げることができます。たとえば、私が行ったように、色を変更するにはCSSコードを操作します。

0

クローンされた要素がクリックされたタイトルとインデックス番号を取得するために、DOMを上下に登ることができます。

$("body").on("click", ".search .btnFavorite", function(e) { 
 
    var elIndex = Array.from(e.target.parentNode.parentNode.children).indexOf(e.target.parentNode); 
 
    var favoriteMovieTest = e.target.parentNode.innerText; 
 

 
    alert('H3: ' + favoriteMovieTest + ' index: ' + elIndex); 
 
}); 
 
for (var i = 0; i < 10; i++) { 
 
    $(".search-result:first").clone().appendTo(".search"); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="search"> 
 
    <div class="search-result"> 
 
    <h3 id='title'>Title(year)</h3> 
 
    <input type="submit" value="Favoritfilm" class="btn btn-warning btnFavorite"> 
 
    <input id="btnArkiv" type="submit" value="Arkiv" class="btn btn-warning"> 
 
    </div> 
 
</div>

関連する問題