原生js怎么动态的绑定事件

  1. 我用的vue,用了json-editor这个插件,我需要给textarea标签所有data-schemaformat="html"类型绑定focus事件,还有新添的textarea也要绑定

    <textarea data-schemaformat="html" name="root[title]"></textarea>
  2. 我用了queryselectorall addeventlistener 都不行

  3. 请问用原生的js怎么解决

  4. 请大家看好问题,html是json-editor插件生成的,我怎么来给所有的textarea包括心生成的textarea绑定onfocus

阅读 5.2k
5 个回答

1.用MutationObserver监控DOM变化,有新添加的textarea则添加绑定(不兼容旧IE)

2.或者直接在父元素上绑定,通过判断target做对应处理

        document.querySelector('body').addEventListener('focus', (ev) => {
            if (ev.target.nodeName === 'TEXTAREA' && event.target.dataset['schemaformat'] === 'html') {
                /* ... */
                console.log('123')
            }
        }, true)

editor.on('fouse',function() {
// Do something
});

就这么干!

<div id="main">
  <button>什么都不干</button>
  <textarea data-schemaformat="html" name="root[title]" class="test" @focus="tryme"></textarea>
</div>

var vm = new Vue({
  el: "#main",
  data: {
  },
  methods: {
    tryme() {
      //console.log('我完全停不下来啦~~~');
    },
  }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题