javascript - 如何使用 jquery 选择器在 ECMA 6 中的类中定义事件?

标签 javascript ecmascript-6 jquery-events

我已经使用新标准 ECMA6 定义了一个类,我想将所有点击事件和其他内容放入该类中。我怎样才能做到这一点?我搜索了几篇文章,但没有一篇提到如何做到这一点......我尝试像这样在构造函数上定义事件,但根本不起作用:

   class Grid{

        constructor(gridOptions) {
         this.grid_header='';
         this.grid_body='';
         this.grid='';   
         this.options=gridOptions;
         this.cacheDom();
         this.bindEvents();
         this.buildGrid();

       $( ".page" ).on( "click", function() {
               alert("hola");
             });


        }

        cacheDom() {
           this.$greeder = $(this.options.selector);
        } 

        bindEvents() {

        }

        buildGrid(page_number=1){


        }


    }

编辑:我希望每次触发该事件时,都执行我的类中的方法

最佳答案

ES6 不会改变 jQuery 和 DOM 事件以及事件处理程序的工作方式。

您当前所拥有的应该“有效”,即它应该为所有具有 .page 类名并在执行特定代码时存在于 DOM 中的元素添加一个点击处理程序。如果元素是在事件绑定(bind)后动态生成的,那么您的代码将无法工作,因为 DOM 中尚不存在目标元素。您应该使用事件委托(delegate)。

$('aStaticParentSelector').on('event', '.selector', handler);

参见Understanding Event Delegation .

如果您有一个类并且有由该类生成的元素,那么您应该考虑采用不同的方法来选择与类相关的元素。

class Foo {
   constructor() {
      this.$el = jQuery('<div class="page">').appendTo('.somewhere');
      this.$el.on('click', this.clickHandler.bind(this));
   }

   clickHandler(event) {
    // `this` keyword refers to the instance
    // `this.$el` => a jQuery wrapped element
    // `event.currentTarget` => the DOM element that is wrapped by jQuery in `this.$el`
   }
}

上面的代码使用Function.prototype.bind用于设置处理程序的 this 值。

请注意,ES6 类只是语法糖,并没有从根本上改变 JavaScript OOP 系统的工作方式。

关于javascript - 如何使用 jquery 选择器在 ECMA 6 中的类中定义事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38189851/

相关文章:

javascript - 如何在页面完全加载之前禁用点击事件?

javascript - 使用模板文字通过 javascript 将值分配给 title 属性

javascript - 如何获取 JavaScript 生成器的第 n 个值?

javascript - 使 "mark of the web"在 Microsoft Edge 中工作?

javascript - 是什么导致表单提交时 URL 发生变化

javascript - TypeScript:找不到变量名称(在条件语句中设置)

javascript - 如何使用 JavaScript 或 jQuery 实现搜索功能

javascript - 在 JQuery 中的复选框上输入按键事件

javascript - 如何填充下拉列表,观察者返回的值?

javascript - jQuery 返回的对象的实际类型是什么