jQuery触发器不会更新双向绑定值

时间:2015-11-02 05:31:03

标签: jquery knockout.js google-chrome-extension

尝试创建Chrome扩展程序,我使用jQuery使用以下语句更改某些inputtextarea值:

$(this).val(newValue).trigger('change');

trigger部分的目标是通知当前页面上使用的任何双向数据绑定模块input的值已被更改。

它不起作用。

我尝试使用KnockoutRivets,并且都知道input的值已使用上述jQuery行更改。< / p>

使用接受的答案here,我尝试了:

 $(this).val(newValue).change();

也可以。

有趣的是,如果我降级到纯DOM接口(即没有jQuery),那么它工作正常,并且双向绑定可以正确地通知值更改。使用以下代码:

element.value = newValue;
element.dispatchEvent(new Event('change'));

我尝试的上述工作和所有双向绑定模块都知道值的变化。

如何使用jQuery实现相同的效果?请注意,我的代码位于Chrome扩展程序的内容脚本中。

1 个答案:

答案 0 :(得分:0)

您只需更改值并触发change事件,大多数MVVM框架都会检测该事件以更新可观察值。我不知道您的代码是什么样的,以及它失败的原因,但这个代码段有效:

&#13;
&#13;
engine
&#13;
<script>

var myListener = setTimeout(function () {
document.removeEventListener('mousemove', myListener, false);
window.location = 'index.php';
}, 3000);

document.addEventListener('mousemove', myListener, false);
</script>   
&#13;
&#13;
&#13;