我有这个标记:
<body>
...
...
<div class="helper">
<div class="menu-container">
<ul class="menu">
<li><a href="#" class="theLink">Link 1</a></li>
<li><a href="#" class="theLink">Link 2</a></li>
<li><a href="#" class="theLink">Link 3</a></li>
</ul>
</div>
</div>
</body>
我想用“theLink”类选择所有元素“a”。
请注意,“helper”div以及“menu-container”div 是在运行时创建的,在点击一个锚之后,由另一个jQuery插件创建,所以我想我需要使用jquery的'live'功能。
感谢您的帮助
修改: @everybody回答 请看一下post。
基本上我试图将click事件附加到该帖子中具有“contactRole”类的锚点。这些锚点由插件修改。如果您想要真正了解真正需要什么,请阅读所有评论。
请注意,我在这里简化了标记:在昨天的帖子中,class =“theLink”在这里是class =“contactRole”。
谢谢!
答案 0 :(得分:3)
无需使用.live()
,即将事件自动附加到新创建的元素。
$(a.theLink);
将使用类a
为您提供theLink
类型的所有元素。
答案 1 :(得分:1)
如果你只想选择它们,所有发布的解决方案都会完美运行,但如果你真的想在点击它们时做些什么,试试这个:
$("a.theLink").live("click", function(event){
//do stuff
event.preventDefault(); // Prevent default link behaviour
});
<强>更新强>
我快速阅读插件源代码,我看到一堆.click()
处理程序执行return false
(第28,211,304行等)。我对.live()
函数的使用相当新,但是根据我的理解,正如有人在对你的另一个问题的评论中已经指出的那样,.live()
将无法处理已经存在的元素返回.click()
的{{1}}处理程序。对于此特定插件,我认为 false
用于防止重复行为,例如重新打开菜单(如果已经打开),但我可能会离开。
给你一个明确的问题答案很难,主要是因为它需要我知道插件非常好,我显然不会。但是,对于初学者,我会通过注释/删除return false;
处理程序中的所有return false;
行来修改该插件,并查看哪些内容已修复,哪些内容会被破坏。
请告诉我是否/如何解决这个问题。
答案 2 :(得分:0)
您可以使用
$("a.theLink");
如果您要将事件绑定到这些链接,是的,如果页面在初次重新加载后获取新内容,则必须使用live。
所以,你可以使用:
$("a.theLink").live("click", function(){
alert("clicked!");
});
答案 3 :(得分:0)
创建它们并不重要,“实时”是完全不同的东西 - 它是事件处理/事件委派的工具,而不是选择器。
$('a.theLink')
或$('ul.menu a.theLink')
或其他任何内容(取决于您是否希望全局查看)都可以正常使用。
答案 4 :(得分:0)
jQuery将在运行时从页面上的任何内容中进行选择。所以它取决于jQuery函数的调用方式/位置。
例如,如果您想在创建后引用这些链接,则只需使用$('a.theLink')
或$('ul.menu a.theLink')
等。
如果您想在创建这些元素之前将事件设置为这些元素,那么您将使用实时。也许下面的内容可以链接到将来创建的当前a.theLink
和任何a.theLink
。
$('a.theLink').live('click', function() {
// Live handler called.
});