2013-06-03 105 views
1

我正在生成無序列表中的列表項。然後,我想要聽取對這些列表項目的點擊。我知道我沒有發佈完整的代碼,但我希望我沒有必要。像這樣的元素被我的jQuery點擊函數完全忽略了嗎?我已經嘗試了一切,但無法找出原因!我想看到的是我的「大聲笑」警報! :(.click()函數被忽略

$.each(entries, function(i, v) { 
    s += '<li'; 
    if (favouriteItem(v.title)) s += ' data-theme="e"'; 
    s += '><a href="#feedItemPage" class="contentLink" data-transition="slide" data-entryid="'+i+'">' + v.title + '</a></li>'; 
    }); 

    $("#linksList").append(s); 
    $("#linksList").listview("refresh"); 

    $("li").click(function() { 
     alert("lol"); 
     selectedEntry = $(this).data("entryid"); 
    }); 

雖然項目做視覺顯示的源代碼保持這樣的:?

<div data-role="content"> 
     <ul data-role="listview" id="linksList" data-divider-theme="b" data-inset="false"></ul> 
    </div> 

提示有沒有li元素有但他們確實表現出視覺上有人請我之前救我跳進熔岩池

+0

「的源代碼保持這樣。」你如何檢查?您是使用開發人員工具還是僅使用「查看源代碼」? – Dave

+0

你在源代碼中沒有看到它們的原因將是你查看源代碼的方式。如果你右鍵單擊 - >查看源代碼,那麼它很可能會顯示源代碼,就像瀏覽器收到源代碼時一樣。 嘗試使用開發人員工具。我不記得如何在所有瀏覽器中找到他們,但在Firefox中,它是工具 - >開發人員工具 – Jeff

+0

謝謝你們。我不知道它不會顯示在Chrome的視圖源頁面中。這就是我正在檢查它的原因,下次我將使用開發人員工具。 8-) – jskidd3

回答

7

更改:

$("li").click(function() { 
    alert("lol"); 
    selectedEntry = $(this).data("entryid"); 
}); 

$('#linksList').on('click', 'li',function() { 
    alert("lol"); 
    selectedEntry = $(this).data("entryid"); 
}); 

如果動態元素添加到該文件,你需要使用.on()'s委派事件的語法。

的事件處理程序僅結合到當前選擇的元素;在代碼調用.on()時,頁面上必須存在 。 要確保元素存在並且可以選擇,請在頁面上的HTML標記中的 HTML標記中對元素執行文檔就緒處理程序內的事件 綁定。如果新頁面被注入頁面, 選擇元素並附加事件處理程序,當新的HTML被放置到頁面中時,頁面中的內容爲 。

+0

帶來混淆,因爲行爲根據您調用方法的不同而變化 –

+1

@abdulwakeel - 如果您沒有閱讀文檔,這隻會讓您感到困惑。 – j08691

+0

.bind(),.live()和.delegate()全部合併到 –

1

使用代表團:

$("#linksList").on('click',"li",function() { 
     alert("lol"); 
     selectedEntry = $(this).data("entryid"); 
    });