为什么我们使用"这个"传递给.not()和.map()的函数内部的不同样式?

时间:2016-02-24 04:53:57

标签: jquery methods javascript-objects

令人困惑的是,为什么我们使用$(this)在传递给.not()的函数内部引用DOM元素对象,并将此函数传递给.map()。

$('a').not (function () {return !$(this).attr ('class') == 'keep';})

$('a').map (function() {return this.class == 'keep'?  this.className : null;})

2 个答案:

答案 0 :(得分:2)

this是DOM节点时,您可以使用:

  1. this.id这样的东西,使用普通的Javascript(没有jQuery语法)直接在DOM元素上引用属性。
    1. $(this).css("display")之类的东西来创建一个包含DOM元素的jQuery对象,这样你就可以使用jQuery方法了。 $(this)创建一个带有on元素的jQuery对象。
    2. 你可以使用哪个更合适取决于是否只需要普通的Javascript属性访问,或者你是否需要一个jQuery对象,然后可以在其上调用jQuery方法。两种情况都可以根据情况使用。

      仅供参考,在您的示例中,您应该使用this.className,而不是this.class。来自MDN的说明:

        

      名称className用于此属性而不是class,因为   与使用的许多语言中的“class”关键字冲突   操纵DOM。

答案 1 :(得分:0)

您是否测试过代码?两个回调都是通过纯DOM节点传递的,因此如果要使用$()等jQuery函数,则需要在两者中都使用attr