从函数内部获取索引

时间:2015-06-27 05:05:08

标签: jquery

使用以下代码我尝试从绑定播放[index] .click()的函数内部访问 index

我一直在尝试几件事,但无法弄清楚。

jQuery(document).ready(function($) {
    $( ".player" ).each(function( index ) {
        if (typeof play === 'undefined') {
            play = [];
        }

        play[index] = $(this).children('.button.play');

        play[index].on('click', function(e, index) {
            e.preventDefault();

            // index where are you?
            console.log( index );

        });
    });
});

修改

Html会像这样:

<div class="player">
    <a class="button play" href="" title=""></a>
</div>

3 个答案:

答案 0 :(得分:2)

function(e, index) {。您正在分配&#34;索引&#34;内部函数,所以现在这是另一个变量。无需这样做,只需删除(e,index)

    //index here
    play[index].on('click', function(e) {
        e.preventDefault();
        // index where are you?
        console.log( index );

    });

答案 1 :(得分:1)

您只是不将索引作为参数传递给事件,因为只有event参数。但是,您可以将对象传递给事件https://api.jquery.com/event.data/

 jQuery(document).ready(function($) {
    $( ".player" ).each(function( index ) {
        if (typeof play === 'undefined') {
            play = [];
        }

        play[index] = $(this).children('.button.play');

        play[index].on('click', {value : index} ,function(e) {
            e.preventDefault();

            // index accessible from this block
            console.log( e.data.value );

        });
    });
});

修改
这只是一种可能性,因为索引可以从事件中访问。所以你不需要这样做,因为可以从每个按钮访问索引。 这是codepen

答案 2 :(得分:0)

您有一个参数index,其名称与您要使用的外部作用域中的变量相同。

如果标识符在当前范围内使用,则Javascript不允许您访问其他范围中的变量。

您需要重命名参数或将其全部删除。