2013-07-09 98 views
0

我有一個動態創建的json數據列表。 所以我的問題是如何獲得點擊項目的索引。動態創建列表的索引Javascript

我嘗試這樣做:

$("li").click(function() { 
     var index = $("li").index(this); 
     alert(index); }); 

但這沒有工作。我沒有得到警報? 如果我創建一些靜態鋰元素,我得到它們的索引。

請大家幫幫我:/

回答

2

動態創建的列表將需要委託事件......

$("ul").on("click", "li", function() { 
     var index = $(this).index(); 
     alert(index); 
}); 

如果還動態創建的<ul>,請在創建列表之前存在一個父節點。

+0

工程很棒:))ü幫助了我很多。謝謝 –

+0

沒問題,樂於幫忙! – DevlshOne

+0

@ user2561004如果您對此答案感到滿意,請將其標記爲恰當。謝謝。 – DevlshOne

-1

這是

$("li").click(function() { 
     var index = $(this).index(); 
     alert(index); 
}); 
+0

他的問題,直接關係到動態創建的李品,指數沒有價值的。 – DevlshOne

+0

任何人都可以猜到?我不推薦將現場事件作爲任何問題的默認解決方案,並且有多種方法可以將處理程序添加到動態創建的列表中。 – FloydThreepwood

+0

他的帖子包含聲明**但這沒有奏效。我沒有得到警報?如果我創建一些靜態李元素,我得到他們的索引。**不涉及猜測。 – DevlshOne

1

兩個問題:

  1. 你只是想$(this).index()

    $("li").click(function() { 
        var index = $(this).index(); 
        alert(index); }); 
    

    the documentation

    如果沒有參數傳遞給.index()方法,則返回值是一個整數,指示jQuery對象內第一個元素相對於其同級元素的位置。

  2. 當你做$("li").click(...),它掛鉤起來,以在時間在這一點上存在的元素。稍後添加的部件將不會獲得分配給它們的點擊處理程序。處理這種動態列表的最好方法通常是事件代理。 DevlshOne給你一個例子in his/her answer。其基本思路是這樣的:

    $("selector for the list, not the list items").on("click", "li", function() { 
        // handler code here 
    }); 
    

    名單上鉤click,沒有列表項,但是當好像你對處理程序掛鉤點擊發生的點擊就會自動觸發處理程序。

+1

他的問題直接關係到LI項目的動態創建,而不是索引的值。 – DevlshOne

+0

啊,這是處理程序,我明白你在說什麼,謝謝。 –

+0

他的帖子包含聲明**但這沒有奏效。我沒有得到警報?如果我創建一些靜態李元素,我得到他們的索引。** – DevlshOne

0

請嘗試以下操作。假設ul不是動態加載的。

$("ul.containerclass").on("click", "li", function() 
{ 
    var index = $(this).index(); 
    alert(index); 
}); 

$(document).on("click", ".containerclass li", function() { 
    var index = $(this).index(); 
    alert(index); 
}); 

注:此處containerclass可ID