如何在元素的默认行为之后运行单击功能
how to run click function after default behaviour of a element
我的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script src="jquery.js"></script>
<script>
$(function(){
$("body").on("click",".mes_sel",function(){
if($(".mes_sel:checked").length==0){
alert("Checked");
}
else alert("Not Checked");
});
});
</script></head>
<body>
<input type="checkbox" class="mes_sel">
</body>
</html>
取消选中文本框时,它会发出警报,因为 onclick 在选中复选框之前正在运行。如何使单击事件在选中/取消选中输入
为此
使用change
:
$(function(){
$(".mes_sel").on("change", function(){
if($(this).is(':checked')){
alert("Checked");
} else {
alert("Not Checked");
}
});
});
演示
试试这个:
$("body").on("click", ".mes_sel", function() {
if ($(this).is(":checked")) {
alert("Checked");
}
else alert("Not Checked");
});
jsFiddle 示例。
不久前我遇到了这个问题 - 我还发现不同的浏览器处理这个问题的方式不同。 如果我没记错的话,Chrome 是最严重的违规者。
这不一定是最好的解决方案,但您可以将自定义属性附加到每个复选框,说"isChecked",然后基于此属性构建函数,如下所示:
if ($("mes_sel").attr("isChecked") == "true") { ... }
就像我说的,这不是最好的解决方案,因为您必须手动翻转"isChecked"属性才能与复选框的实际选中值保持一致,但是如果没有更优雅的东西适合您,它将起作用。
如果你想要一个例子,看看这个jsFiddle:
http://jsfiddle.net/NathanFriend/GAP2j/
这会将常规单选按钮转换为"可切换"单选按钮 - 由于浏览器执行onclick
事件的方式不同,我被迫使用此自定义属性方法。
相关文章:
- 如何让C#代码在页面加载时运行的jquery脚本之后运行
- 在.append之后运行函数
- 在on.change事件之后运行函数
- 在AJAX jQuery加载()之后运行jQuery代码
- 在客户端 Javascript 方法之后运行服务器方法
- 在每个函数之后运行一个函数
- 有人能为我指明正确的方向,让一个javascript文件在另一个单独的javascript文件之后运行吗
- JS-强制函数在其他函数之后运行
- 如何在元素的默认行为之后运行单击功能
- 如何在 pjax 加载之前和之后运行 jQuery
- 在构造函数之后运行其他操作
- 在 modeldata 之后运行 JavaScript 代码是有效的
- 在通过Modernizr加载jQuery之后运行自定义代码
- jQuery lightbox(羽灯)如何在Open事件之前和之后运行
- 如何在jquery中准备好$.mobile.changePage之后运行回调函数
- 阻止其他功能在所选功能之后运行
- 如何在Angular中的回调函数之后运行代码
- Selenium2 WebDriver executeScript是否在window.onload之后运行
- 在更新面板AJAX asp.net之后运行脚本
- 使用循环在另一个函数之后运行一个函数&jQuery/JavaScript中的promise