为啥尽管输入的值确实发生了变化,但 jquery 更改事件却没有触发? [复制]
Posted
技术标签:
【中文标题】为啥尽管输入的值确实发生了变化,但 jquery 更改事件却没有触发? [复制]【英文标题】:why does the jquery change event not trigger though the value of input changed indeedly? [duplicate]为什么尽管输入的值确实发生了变化,但 jquery 更改事件却没有触发? [复制] 【发布时间】:2014-06-26 02:15:36 【问题描述】:JSFIDDLE html代码:
<body>
<input value="123">
<button>button</button>
</body>
Js代码(使用JQuery 1.2.0):
$(function()
$("button").click(function()
$("input").val("balabala...");
);
$("body").on("change","input",function()
alert("change");
alert($("input").val());
);
);
问题: 一开始,输入的值为“123”。 当我通过手动编辑更改文本并单击输入字段以外的其他位置时,将触发输入的更改事件。 但是,当我单击按钮时,也会更改输入的值,输入的更改事件将不起作用。 感谢您的帮助。
【问题讨论】:
另见:***.com/questions/3179385/… @Todd,谢谢,它们很相似并且几乎相同。 【参考方案1】:JSFiddle
您需要将.change()
附加到click
函数上:
$(function()
$("button").click(function()
$("input").val("balabala...").change();
);
$("body").on("change","input",function()
alert("change");
alert($("input").val());
);
);
【讨论】:
谢谢,它也有效。 :-)【参考方案2】:使用代码以编程方式更改值时不会触发change
事件,您必须自己触发它
$(function()
$("button").click(function()
$("input").val("balabala...").trigger('change');
);
$("body").on("change","input",function()
alert("change");
alert($("input").val());
);
);
FIDDLE
【讨论】:
哦,只是出于兴趣,使用.trigger('change')
和.change()
有什么区别?
@adeneo 可以,谢谢!
在这种情况下真的没有区别,jQuery 只是有一个特殊的 trigger()
方法可以做到这一点,它接受的选项比仅仅使用 .change()
啊,好的,谢谢 :) @adeneo
@BeatAlex 这两种方法都有效,但我不知道细节上的区别。以上是关于为啥尽管输入的值确实发生了变化,但 jquery 更改事件却没有触发? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
printList函数中原始头指针没有改变,但插入节点时列表确实发生了变化