$(this.element)未定义,不明白为什么

时间:2017-04-06 15:33:12

标签: javascript jquery events this

嘿大家我试图在使用jquery事件委托方法点击的目标元素中添加一个类,但是' $(this.element)'未定义。这是为什么?谢谢你们!

  tabWrapper.on('click', '.services-tabs', function(event) {
    $('.services-tabs').removeClass('selected');
    $(this.element).addClass('selected');
    console.log(this.element);
  });

2 个答案:

答案 0 :(得分:1)

jQuery API文档中的

Reference for .on()说:

  

当jQuery调用处理程序时,this关键字是对该处理程序的引用   事件交付的元素;对于直接绑定的事件   这是附加事件和委托事件的元素   事件这是一个匹配selector的元素。 (请注意,这可能不是   如果事件来自后代,则等于event.target   element。)从元素创建一个jQuery对象,以便它可以   与jQuery方法一起使用时,请使用$( this )

当然,没有什么可以阻止你执行$(this.element)但除非this有一个名为element的属性恰好是一个DOM节点(或带有HTML的字符串),否则它将无效)。

答案 1 :(得分:0)

我认为它应该是$(this)而不是你在这里所拥有的:

$(this.element)

试试这个:

tabWrapper.on('click', '.services-tabs', function(event) {
    $('.services-tabs').removeClass('selected');
    $(this).addClass('selected');
    console.log(this.element);
  }); 
编辑:我看到@RoryMcCrossan的评论已经回答了这个问题。