令人困惑的是,为什么我们使用$(this)在传递给.not()的函数内部引用DOM元素对象,并将此函数传递给.map()。
$('a').not (function () {return !$(this).attr ('class') == 'keep';})
$('a').map (function() {return this.class == 'keep'? this.className : null;})
答案 0 :(得分:2)
当this
是DOM节点时,您可以使用:
this.id
这样的东西,使用普通的Javascript(没有jQuery语法)直接在DOM元素上引用属性。或
$(this).css("display")
之类的东西来创建一个包含DOM元素的jQuery对象,这样你就可以使用jQuery方法了。 $(this)
创建一个带有on元素的jQuery对象。你可以使用哪个更合适取决于是否只需要普通的Javascript属性访问,或者你是否需要一个jQuery对象,然后可以在其上调用jQuery方法。两种情况都可以根据情况使用。
仅供参考,在您的示例中,您应该使用this.className
,而不是this.class
。来自MDN的说明:
名称
className
用于此属性而不是class
,因为 与使用的许多语言中的“class”关键字冲突 操纵DOM。
答案 1 :(得分:0)
您是否测试过代码?两个回调都是通过纯DOM节点传递的,因此如果要使用$()
等jQuery函数,则需要在两者中都使用attr
。