jQuery按钮单击“这个”

假设我们有一个简单的事件按钮处理程序

$( "#aButton" ).click(function() { console.log( "tile" + this.val() + "clicked" ); }); 

我意识到“这个”大多数上下文都会引用“窗口”对象…..但到处都是我一直在看“这个”的代码示例,谈论Jquery是一个特例, this暗示是事件处理程序所处的任何对象(我一直认为this是基于什么“调用”函数,而“Window”是什么叫做函数?

如果对于jQuery这不是真的,那么有没有更好的方法来引用被点击的对象?

使用$(this)获取单击的元素。

 $("#aButton").click(function() { console.log("tile " + $(this).val() + " clicked"); }); 

另外,你可以注意到$(this)[0] === this

当使用内置的JavaScript方法时,例如.addEventListener() ,可以使用this方法。 在此上下文中使用this将返回触发事件的节点。

this是原始的DOM元素。 如果要在其上使用jQuery函数,则必须将其包装在jQuery对象中。

 console.log( "tile" + $(this).val() + "clicked" ); // ^^^^^^^^^^^^^ 

输入具有一个名为value的属性,它具有相同的function。 所以你可以在原始DOM输入上使用它,如下所示:

 console.log( "tile" + this.value + "clicked" ); // ^^^^^^^^^^ 

你点击的对象可以通过this来引用,所以说this.id会给你按钮的id“aButton”。 但是,如果你想使用jQuery的方法,那么你必须说$(this).attr('id')这将再次给你“aButton”。 所以你确实有不同的机制,但是如果你使用的是jQuery,最好使用jQuery方法。