在我的Backbone模型中我有:
events: {
'change textarea' : 'changeContentTextarea',
...
当用户手动将文本输入textarea时,它会触发并执行此操作:
this.model.set('content', this.$el.find('textarea').val());
但是当程序中的内容发生变化时(使用jQuery),它不会触发:
txtarea.val(finalText);
因此模型的属性不会更新,只有textarea中的文本会发生变化。
是否有任何可以绑定的事件来解决此问题? 或者我如何在使用jQuery更改内容后触发事件?
答案 0 :(得分:2)
来自https://api.jquery.com/change/
注意:使用JavaScript更改输入元素的值,例如使用.val(),不会触发事件。
所以你必须自己触发change
事件
$("textarea").val(finalText).trigger("change");
答案 1 :(得分:1)
以下答案是正确的,只有当您需要知道事件是由用户或JS触发时,您才能这样做:
$("textarea").val(finalText).trigger("customChange");
并定义类似的listen事件:
events: {
'customChange textarea' : 'doSomethingWithJSEvent',