jquery中radio元素的trigger("change")不能触发的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery中radio元素的trigger("change")不能触发的问题相关的知识,希望对你有一定的参考价值。

//根据radio元素的值,来控制另一个元素#a的显示和隐藏:
$('input[name="radioEle"]').change(function()
var v=$(this).attr("value");
if (v== "1")

//show element #a

else

//hide element #a

);
//然后在页面载入后,触发该radio的change事件:

$(document).ready(function()
$('input[name="radioEle"]').change();
);

发现#a元素没有正确隐藏。
但是如果用鼠标重新点击radio的选项,#a元素是可以正常显示和隐藏的。就是页面载入的时候不行。百思不得其解啊~望高手赐教!

没在radio上用过change事件,一般radio都是通过click事件处理的。如
<input type="radio" onclick="if($(this).is(':checked') alert(1); else alert(2);" />

所以我也不知道这是不是bug,但是肯定可以绕过去的。比如
<input type="radio" name="r1" id="r11" refer="r11-div" onclick="if($(this).is(':checked')) $('#' + $(this).attr('refer')).show(); else $('#' + $(this).attr('refer')).hide();">
<script>

$(document).ready(function()
$('#r11').click();

);

嗯,楼上说的也有道理,你可以试试看把绑定那部分的代码也放到ready事件中执行。
参考技术A 你检查一下 你事件绑定的代码 和onready触发change的代码先后顺序吧。追问

谢谢~
问题已经解决。

是change事件写得有问题。var v=$(this).attr("value");这个是被执行多次的,因为$('input[name="radioEle"]').length大于1。也就是说,radio组中的每个input都被循环执行了。

以上是关于jquery中radio元素的trigger("change")不能触发的问题的主要内容,如果未能解决你的问题,请参考以下文章

多选输入:一个jquery函数中的radio元素

jquery的bind()和trigger()

Jquery 中 .trigger 的用法

layui 自动触发radio和select

jquery trigger('mouseenter')在tampermonkey中无效

jQuery 事件 - trigger() 方法 和 triggerHandler() 方法