jquery 选择器总是选择,即使它不应该
The jquery selector always selecting even it should not
$("#question-proper table tr td input[value='Save']").on('click',function(){
var number = parseInt($(this).attr('data'));
$(this).attr("value","Add");
alert("Clicked");
});
当我再次单击带有添加值的输入按钮时。它会在未预料到的情况下再次发出警报。不应该,因为输入按钮的值现在是"添加"而不是"保存"。
$(document).on("click", "input[value='Save']", function(){
$(this).attr("value", "Add");
alert("clicked");
});
调整以满足您的需求
在这里小提琴:http://jsfiddle.net/omofa2v9/
在此处阅读有关活动委派的信息
该事件绑定到元素,即使它不再与查询匹配,也会保留该事件。事实上,事件甚至不知道查询是什么,只知道它被添加到的实际元素。
可能的解决方案:
委托给父元素:
$("#question-proper table tr td").on('click', "input[value='Save']", function(){
var number = parseInt($(this).attr('data'));
$(this).attr("value","Add");
alert("Clicked");
});
签到事件:
$("#question-proper table tr td input[value='Save']").on('click',function(){
if($this).attr('value') !== 'Save') return;
var number = parseInt($(this).attr('data'));
$(this).attr("value","Add");
alert("Clicked");
});
使用.one
仅运行一次事件:
$("#question-proper table tr td input[value='Save']").one('click',function(){
var number = parseInt($(this).attr('data'));
$(this).attr("value","Add");
alert("Clicked");
});
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 当一些事情可以通过JS或CSS完成时,我应该选择哪种方式
- 选择不带选择器的元素,仅使用元素ID
- Javascript代码添加了一些不应该存在的内容
- 不应选择缩略图优先图像
- 有没有任何情况下,一个方法不应该是原型方法
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- select2 使用 AJAX 加载数据不能选择任何选项
- Node.js Promise - 代码不应该等到 .then 完成()
- 跳跃运动:旋转轴 – 如果手静止不动,它不应该在 0 左右
- 如果我不应该在组件WillUpdate中调用setState,如何更新状态(使用ReactJS)
- Javascript:尝试从多个没有匹配的数组中采样,在不应该的时候循环递增
- Javascript不是选择器
- 选择与ng模型和ng选项绑定时不进行选择
- Javascript插件不应该影响所有的选择框
- jquery 选择器总是选择,即使它不应该
- 为什么我应该选择在AngularJS中使用服务而不是工厂
- 选择“NA"第一个下拉框中的值不应该被禁用"NA"第二个下拉列表中的值
- 什么时候应该选择angular指令而不是html原生标签
- JavaScript中数组和集合的区别是什么,什么时候我应该选择一个而不是另一个