单击“更改选择器后不触发”
Click Not to Fire After Selector is Changed
我在网站上有一个锚点。当有人点击它时,我会在 jquery 中 smth 并更改名称,但是当它再次点击时,事件被触发,尽管我已经更改了它的名称。代码在这里:
$(".like_cont a[name=like]").click(function (e) {
alert("W");
var t = $(this);
t.find("img").attr("src", "images/like_icon.png");
var ls = parseInt(t.next().next()) + 1;
t.next().next().text(ls);
var params = "Like|" + t.attr("lik");
CallServer(params, "");
t.attr("name", "liked");
e.preventDefault();
});
点击后name
被喜欢,但另一个点击事件触发。如何更改选择器以保持射击?
一种可能的方法是调用 .off() 从对象中删除单击事件。
您可以根据 Iridoid 的答案调用.off()
删除事件处理程序。
或者,可以使用委托事件处理模型:
$(".like_cont").on("click", "a[name=like]", function (e) {
...
});
这依赖于这样一个事实,即单击(和大多数其他)事件从源元素通过其所有包含元素冒泡。因此,使用绑定了此语法的处理程序 .on()
,每当单击(在本例中)".like_cont"
元素时,jQuery 都会测试事件的源元素,以查看它是否与第二个参数中的选择器匹配,"a[name=like]"
- 如果匹配,则调用函数,否则不调用。
换句话说,对于委托处理模型,仅当事件发生时单击的元素与第二个参数中的选择器匹配时,才会调用该函数。
使用绑定.click()
的"标准"处理程序,或与没有第二个参数的.on()
绑定,事件将直接绑定到在事件绑定时与选择器匹配的元素 - 无论这些元素在事件发生时是否仍然与该选择器匹配。(并不是说这是一件坏事 - 有时这正是您所需要的,只是在您目前的情况下并非如此。
相关文章:
- 谷歌地图v3侦听器(单击)-更改URL
- 选择全部单击复选框以及全部拒绝
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- 选择首次单击浏览器操作时打开的弹出窗口
- 日期选取器单击事件获取日期
- Ace代码编辑器单击后消失
- 如何选择并单击没有 id 属性的按钮
- Adobe Acrobat X疑难解答下拉列表颜色选择.需要单击选择
- jQuery UI链接选择菜单.单击按钮时窗体将重置
- 未捕获错误:语法错误,无法识别表达式Jquery选择器单引号与双引号
- 相同的选择器单击添加和删除
- 选择并单击类中的链接
- 使用多个选择框单击后显示/隐藏输入文本
- 事件侦听器单击不起作用
- 动态添加 html 选择上单击另一个选择框选项
- Jquery - 检测禁用的 HTML 选择的单击选项
- 侦听器单击任何元素并读取特定的 HTML-5 自定义属性(如果存在)
- 静音流播放器单击自定义按钮
- jQuery选择器单击功能说明
- jquery选择器单击事件未使用angular触发