クリックされたクラスのインデックスを取得しようとしており、jQuery の次のコードを使用していますが、常に 0 (ゼロ) と表示されます。この問題の解決にご協力ください。よろしくお願いします。
$('.image_or_video').live('click', function(){
var clicked_radio = $(this).index();
alert(clicked_radio);
});
クリックされたクラスのインデックスを取得しようとしており、jQuery の次のコードを使用していますが、常に 0 (ゼロ) と表示されます。この問題の解決にご協力ください。よろしくお願いします。
$('.image_or_video').live('click', function(){
var clicked_radio = $(this).index();
alert(clicked_radio);
});
.live()
非推奨であることに注意してください。.on()
次のように親要素で使用する必要があります。$('.parent').on('click','.image_or_video',function(){...})
問題を解決するには、次の行を置き換えてみてください: (ドキュメントを見てください)
var clicked_radio = $(this).index();
に
var clicked_radio = $('.image_or_video').index(this);
または
var clicked_radio = $(this).index('.image_or_video');
私はまったく同じjsコードを使用しましたが、うまくいきました:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<p class="image_or_video">clicky</p>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js">
</script>
<script>
$('.image_or_video').live('click', function(){
var clicked_radio = $(this).index();
alert(clicked_radio);
});
</script>
</body>
</html>
jquery のどのバージョンを使用していますか? ライブは非推奨です。代わりに on() を使用してください。
あなたのコードを上記のコード (古い jQuery で動作します) と比較してください。
イベント受信者オブジェクト パラメーターをクリック ハンドラーに追加します。live()
フィドルですばやく動作させることはできませんでしたが、フィドルで動作するようになったのは次のとおりです。
$(function() {
$('.image_or_video').click( function(target){
var clicked_radio = $(target.target).index('.image_or_video');
alert(clicked_radio);
});
});