jQuery $(this).index()总是显示0

时间:2013-07-16 19:37:31

标签: jquery

我正在尝试获取点击类的索引并使用以下jQuery代码,但它始终显示0(零)。请帮忙解决这个问题,提前谢谢。

$('.image_or_video').live('click', function(){
    var clicked_radio = $(this).index();
    alert(clicked_radio);
});

4 个答案:

答案 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>更有用。这个演示应该有助于清理它。

http://jsbin.com/ofapin/3/edit

答案 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) - 您在做什么不同?