Jquery 模拟点击,并触已发绑定的事件

javaliuliu 2014-07-22 11:12:04
现在有个问题,用$("#unThecoupon").trigger("click"); 模拟点击一个checkbox
然后此checkbox在预加载时被绑定了click函数:

$("#unThecoupon").bind("click",function() {
$("[name = paymentType]").each(function() {
//货到付款
if($(this).val()=='2') {
$(this).attr("checked",false);
if($("#unThecoupon").prop('checked')) {
$(this).click(function() {
alert("生成团购券的团购只能在线支付或服务台pos刷卡,不支持货到付款");
$(this).attr("checked",false);
});
} else {
$(this).unbind('click');
}
}

//在线支付 ,服务台pos刷卡
if($(this).val()=='1' || $(this).val()=='3') {
$(this).attr('checked',$("#unThecoupon").prop('checked'));
}
});
});


问题是:
模拟点击后,没有触发unThecoupon的click事件。求遇见过类似问题的童鞋帮忙,谢谢。
...全文
1773 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
自然框架 2014-07-22
  • 打赏
  • 举报
回复
那你用 $("#unThecoupon") .click() 模拟一下。
javaliuliu 2014-07-22
  • 打赏
  • 举报
回复
忘了说,用鼠标自己点击页面上是可以进入click方法的。就是模拟点击不行
javaliuliu 2014-07-22
  • 打赏
  • 举报
回复
引用 1 楼 jyk 的回复:
unThecoupon 是check的ID吗? 你的check的ID都是一个吗? $("#unThecoupon") 只能找到一个。
嗯,是一个id,就是先注册click事件,然后模拟点击。问题是没促发click.
自然框架 2014-07-22
  • 打赏
  • 举报
回复
unThecoupon 是check的ID吗? 你的check的ID都是一个吗? $("#unThecoupon") 只能找到一个。
XZowie 2014-07-22
  • 打赏
  • 举报
回复
javaliuliu 2014-07-22
  • 打赏
  • 举报
回复
引用 9 楼 u012280941 的回复:
建議你改一下寫法:
$("#unThecoupon").change(function () {
    var isChecked = $(this).prop('checked');

    alert(isChecked); //true or false
    alert(typeof(isChecked)); //boolean
});
it really work! thx man. 这就是我要的效果,我还是把刚才发生的重新描述下。 刚才我click()函数模拟点击,然后进入bind click 方法。 以上都没问题。但问题是在bind click函数中checkbox的prop("checked')仍然为false, 我设想应该是click事件在改变属性之前拦截到了事件。、 而change事件是在属性改变之后才进入事件,这点区别,但刚刚满足我的需求。 我还在一直找属性改变监听,一直没找到。不过change可以用也行,能解决问题就好
qcxl 2014-07-22
  • 打赏
  • 举报
回复
还是看下代码,那个地方导致unThecoupon的click事件没有触发
XZowie 2014-07-22
  • 打赏
  • 举报
回复
建議你改一下寫法:
$("#unThecoupon").change(function () {
    var isChecked = $(this).prop('checked');

    alert(isChecked); //true or false
    alert(typeof(isChecked)); //boolean
});
qcxl 2014-07-22
  • 打赏
  • 举报
回复
引用 7 楼 javaliuliu 的回复:
[quote=引用 6 楼 xuzuning 的回复:] click() 是在 onclick 事件发生时所执行的函数 显然是 onclick 在前,click() 在后 如果 click() 能触发 onclick 事件的话,那不就死循环了吗? 你需要的是监听目标的变化
$(sele).on("input propertychange", function () {
    //相关操作
});
首先,我不是很理解onclick和click()的先后顺序。 但我现在的问题是如下:

$("#unThecoupon").click("input propertychange",function() {
		alert($("#unThecoupon").is(':checked'));
		$("[name = paymentType]").each(function() {
			//货到付款
			if($(this).val()=='2') {
				$(this).attr("checked",false);
				if($("#unThecoupon").is(':checked')) {
					$(this).click(function() {
						alert("生成团购券的团购只能在线支付或服务台pos刷卡,不支持货到付款");
						$(this).attr("checked",false);
					});
				} else {
					$(this).unbind('click');
				}
			}
			
			//在线支付 ,服务台pos刷卡
			if($(this).val()=='1' || $(this).val()=='3') {
				$(this).attr('checked',$("#unThecoupon").prop('checked'));
			}
		});
	});
	//默认选中生成团购券
	$("#unThecoupon").click();
alert($("#unThecoupon").is(':checked')); alert出来是false,不知道为什么。在我的预想中应该是ture才对[/quote] ====================================== <label for="ch1">ok</label> <input type="checkbox" id="ch1" /> <button onclick="tri();">trigger</button> JS:function tri(){ $("#ch1").trigger("click"); } 上面代码测试后,出发点击事件可以模拟点击选中,checkbox;所以楼主思路肯定没问题
javaliuliu 2014-07-22
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
click() 是在 onclick 事件发生时所执行的函数 显然是 onclick 在前,click() 在后 如果 click() 能触发 onclick 事件的话,那不就死循环了吗? 你需要的是监听目标的变化
$(sele).on("input propertychange", function () {
    //相关操作
});
首先,我不是很理解onclick和click()的先后顺序。 但我现在的问题是如下:

$("#unThecoupon").click("input propertychange",function() {
		alert($("#unThecoupon").is(':checked'));
		$("[name = paymentType]").each(function() {
			//货到付款
			if($(this).val()=='2') {
				$(this).attr("checked",false);
				if($("#unThecoupon").is(':checked')) {
					$(this).click(function() {
						alert("生成团购券的团购只能在线支付或服务台pos刷卡,不支持货到付款");
						$(this).attr("checked",false);
					});
				} else {
					$(this).unbind('click');
				}
			}
			
			//在线支付 ,服务台pos刷卡
			if($(this).val()=='1' || $(this).val()=='3') {
				$(this).attr('checked',$("#unThecoupon").prop('checked'));
			}
		});
	});
	//默认选中生成团购券
	$("#unThecoupon").click();
alert($("#unThecoupon").is(':checked')); alert出来是false,不知道为什么。在我的预想中应该是ture才对
xuzuning 2014-07-22
  • 打赏
  • 举报
回复
click() 是在 onclick 事件发生时所执行的函数 显然是 onclick 在前,click() 在后 如果 click() 能触发 onclick 事件的话,那不就死循环了吗? 你需要的是监听目标的变化
$(sele).on("input propertychange", function () {
    //相关操作
});
javaliuliu 2014-07-22
  • 打赏
  • 举报
回复
引用 4 楼 jyk 的回复:
那你用 $("#unThecoupon") .click() 模拟一下。
trigger和click是一样的效果呢

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧