如何监听元素发生改变

监听一个对象,值发生变化告诉我,对这个对象不做任何操作

<html>
    <div>
        <input id='lwp'/>
    </div>
</html>
<script>
//这是别人的代码,不归我管,但我必须监听input值发生变化,on('input')只能监听用户输入,不能监听代码赋值,因此不能用这个办法
$('#lwp').val('xx')
//这是我的代码
Object.definePropertie($('#lwp'),{
    get(){},
    set(){
        //当$('lwp').val('xx') 执行时,进来
        //...我的操作
        //如何让这个input显示xx ---卡在这里
    }

})

</script>
阅读 2.5k
3 个回答

首先你要明白Object.defineProperty()是怎么用的
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

备注:应当直接在 Object 构造器对象上调用此方法,而不是在任意一个 Object 类型的实例上调用。

楼上已经给出了各类解决监听的 方法

jQuery
$("#lwp").on("input", function () {
  console.log($(this).val());
});
现代浏览器
lwp.addEventListener("input", ({ target: { value } }) => {
  console.log(value);
});
经典浏览器
document
  .getElementById("lwp")
  .addEventListener("input", function (event) {
    console.log(event.target.value);
  });

手动触发input事件
elem.trigger('input')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏