2015-06-27 108 views
1

使用下面的代碼我試圖從函數綁定的函數裏面訪問索引 play [index] .click()。從函數內部獲取索引

我一直在嘗試幾件事情,但無法弄清楚。

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> 
+1

從'function(e,index)'=>'function(e)' –

+0

刪除'index'哇!非常感謝! –

+0

我把它放在答案,享受 –

回答

2

function(e, index) {。你在函數內部分配「索引」,所以現在這是另一個變量。沒必要做,只是刪除(即index)

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

    }); 
0

你有一個參數,index,具有相同的名稱要在外部範圍的變量使用。

如果標識符在當前作用域中使用,則Javascript不允許您訪問其他作用域中的變量。

您需要重新命名參數或將其完全刪除。

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

+0

非常有趣的謝謝你 –