在jQuery事件处理程序中检查输入[type=checkbox]
Check input[type=checkbox] in jQuery event handler
我有以下HTML:
<ul id=list>
<li>
<input type=checkbox />
Item 1
</li>
<li>
<input type=checkbox />
Item 2
</li>
<li>
<input type=checkbox />
Item 3
</li>
</ul>
和对应的JavaScript:
$('ul').bind('click', function(e) {
if (e.srcElement.tagName.toLowerCase() === 'input') {
e.srcElement.checked = true;
}
return false;
});
$('body').bind('click', function() {
alert('you should see this alert if and only if you did NOT click the list');
})
当我点击一个复选框时,它不会被选中。我想在用户点击它的时候检查它
如何使复选框在用户单击时被选中,但是仍然取消body
点击事件处理程序?
我也放了一个JS小提琴
Edit:我理解代码有点笨拙,但它需要以这种方式构建应用程序,因此解决方案应尽可能接近原始。话虽如此,对观察到的行为的解释将是赞赏的。
使用e.stopPropagation()
[docs]代替return false
。后者还可以防止发生默认操作,即切换复选框的状态。
您还应该考虑将事件处理程序绑定到change
事件而不是click
,鼠标不是切换复选框的唯一方法。您仍然需要添加一个额外的处理程序来防止click
事件冒泡。
我想这就是你想要的?
$('ul').bind('click', function(e) {
e.stopPropagation();
});
$('body').bind('click', function() {
alert('you only see this alert if and only if you did NOT click the list');
})
- 你正在绑定点击到"ul",你应该将它绑定到"ul> input"
-
为了避免点击冒泡,你需要使用event.stopPropagation()取消冒泡我注意到stopPropagation()应该是函数中的第一个。
$('ul').bind('click', function(e){ e.stopPropagation(); if (e.target.tagName.toLowerCase() === 'input') { e.target.checked = true; } }); $('body').bind('click', function() { alert('you should see this alert if and only if you did NOT click the list'); });
相关文章:
- 如何将输入(type=text)从html表单传递到javascript函数
- 正在将base64 jpeg从input-type=file上传到服务器
- 根据CHECKBOX输入值动态更新DIV信息
- 类型错误'未定义'不是对象(正在评估'navigator.connection.type'
- <输入id=“;“到期”;type=“;月份;min=“;2016-05”>如何填写“;min”;属性与当前
- 如何使用Jquery从Asp.netMVC中的CheckBox中获取选定的值
- angular type=[number]指令来阻止粘贴
- 节点,express应用程序返回text/javascript响应头(Content-Type),尽管设置了applic
- 对checkbox的更改事件使用jquery.conf函数
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- 如何停止向上滚动<按钮dojoType=“;dijit.form.Button”;type=“;提交”/>在
- type=text/javascript和language=javascript之间的区别
- jQuery$.post TypeError:e.type不是函数
- 具有多个参数的checkbox函数调用
- 无法在“(”input:checkbox [name=type]:checked“).each(function())”
- $('input[type=checkbox]').change(function()
- 是否保证 document.querySelectorAll(“input[type=checkbox”) 的结果数组的
- 在jQuery事件处理程序中检查输入[type=checkbox]
- input[type="checkbox"]和:checkbox哪一个更快?
- $(& # 39;:复选框# 39;)或美元(& # 39;输入(type =“checkbox") & # 3