我正在尝试获取点击类的索引并使用以下jQuery代码,但它始终显示0(零)。请帮忙解决这个问题,提前谢谢。
$('.image_or_video').live('click', function(){
var clicked_radio = $(this).index();
alert(clicked_radio);
});
答案 0 :(得分:1)
我愿意打赌你想要父母的索引而不是你要点击的元素。看看这段代码。
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Item 4</a></li>
<li><a href="#">Item 5</a></li>
<li><a href="#">Item 6</a></li>
<li><a href="#">Item 7</a></li>
<li><a href="#">Item 8</a></li>
<li><a href="#">Item 9</a></li>
<li><a href="#">Item 10</a></li>
</ul>
<li>
的索引比<a>
更有用。这个演示应该有助于清理它。
答案 1 :(得分:0)
请注意,.live()
已弃用。您应该在父元素上使用.on()
,如下所示:$('.parent').on('click','.image_or_video',function(){...})
要解决问题,请尝试替换以下行:(Take a look on the docs)
var clicked_radio = $(this).index();
到
var clicked_radio = $('.image_or_video').index(this);
或
var clicked_radio = $(this).index('.image_or_video');
答案 2 :(得分:0)
向您的点击处理程序添加事件收件人对象参数。我无法在小提琴中快速使用live()
,但here's what I did get working in the fiddle:
$(function() {
$('.image_or_video').click( function(target){
var clicked_radio = $(target.target).index('.image_or_video');
alert(clicked_radio);
});
});
答案 3 :(得分:0)
我使用了完全相同的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? Live已弃用。请改用()代替。
将您的代码与上面的代码进行比较(适用于旧的jQuery) - 您在做什么不同?