获取所选DOM元素的索引返回-1?

时间:2015-01-09 12:25:49

标签: javascript jquery html

我为了点击事件绑定了album_item,我希望获得box的索引。但我得到了-1。

HTML

<div id="album_item">
    <div class="box box_album_item">
        <div class="album_item">a</div>
    </div>
    <div class="box box_album_item">
        <div class="album_item">b</div>
    </div>
    <div class="box box_album_item">
        <div class="album_item">c</div>
    </div>

的Javascript

    $(function () {
        $(document).on('click', '.album_item', function () {
            alert($(this).find('.box_album_item').index());
        });
    });

4 个答案:

答案 0 :(得分:0)

您正在尝试选择不存在的元素:

find()函数搜索给定元素的子元素,在本例中为.album_item。所以,.album_item没有任何子元素,这就是为什么它的索引是-1

相反,您必须使用closest()函数才能向上搜索DOM树:

$(document).on('click', '.album_item', function () {

        alert($(this).closest('.box_album_item').index());

    });

答案 1 :(得分:0)

它应该是:

alert($(this).closest('.box_album_item').index());
  1. .find()将元素内部传递给孩子。
  2. .closest()向父母移动。
  3. 因此,在您的情况下,.box_album_item是父级,因此应使用.closest()

答案 2 :(得分:0)

alert($(this).closest('.box_album_item').index());

<强> http://jsfiddle.net/f3okr0ba/1/

答案 3 :(得分:0)

$(document).on('click', '#album_item', function () {

使用id代替类