2013-06-03 139 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"); 
    });