2013-06-25 52 views
0

我試圖創建一個函數,當你點擊一個列表視圖中的特定鏈接時啓動。 問題在於,當您點擊鏈接時,事件似乎不會觸發。該列表是動態創建的。我不確定是否會導致問題。如何在jQuery列表視圖中爲特定鏈接創建點擊事件。

<label for="listviewForLastTenCalls">Last Ten Calls:</label> 
    <ul data-role="listview" id="listviewForLastTenCalls"> 
    </ul> 
<script> 
    $('#listviewForLastTenCalls li').click(function(){ 
     //alert('click event handler fired'); 
</script> 
+0

一些HTML請 – krishgopinath

+0

雅,後期相關的HTML代碼,有一個在您的實際代碼... –

+0

'$(文件)。在沒有李( '點擊', '#listviewForLastTenCalls禮',功能(){' – Omar

回答

6

Demo

<ul data-role="listview" id="listviewForLastTenCalls"> 
    <!-- items dynamically generated --> 
</ul> 

JS

$(document).on('click', '#listviewForLastTenCalls li a', function() { 
// code 
}); 
+0

感謝您的幫助omar工作。我忘了事件處理程序會嘗試鎖定在文檔加載之前不存在的li。 – Matt

+0

@Matt歡迎,請查看演示以瞭解更多詳細信息:) – Omar

-1

事情是這樣的:

$(function() { 
    $("#listviewForLastTenCalls li").on('click', function() { alert('clicked'); }); 
}); 
+0

這不會爲動態添加項目工作。 – Omar

+1

你使用'ready'。不準備使用準備好jQM。 – krishgopinath

1

的問題是您要添加的點擊收聽你所創建的列表之後。當你第一次創建監聽器時,它沒有什麼可以聽的。您需要添加上單擊事件您添加<li>

+0

或更好的,使用委託 –

0

我希望這不是你完全標記後,.. 。

<label for="listviewForLastTenCalls">Last Ten Calls:</label> 
    <ul data-role="listview" id="listviewForLastTenCalls"> 
    </ul> 

<script> 
    $('#listviewForLastTenCalls li').click(function(){ 
     //alert('click event handler fired'); 
    }); //<-- 
</script> 

如果該列表是動態creadted,你必須重視的情況下,創建列表後...

0

你必須動態地添加的元素做到event delegation

$('"#listviewForLastTenCalls"').on("click",'li' ,function(){ 
     alert('triggered'); 
    }); 

爲什麼on()工作?

的事件處理程序僅結合到當前選擇的元素;它們必須在代碼調用.on()時存在於頁面上。

1
$('#listviewForLastTenCalls li a').click(function() { 
// code 
}); 
相關問題