JQuery $(this)选择器功能和限制

Bri*_*one 10 jquery this selector

我需要帮助理解$(this).是否有可能在括号内缩小"this"的焦点,或者"this"是否排除使用任何其他属性?

例如:我不明白为什么这段代码:

$(this).children("div")
Run Code Online (Sandbox Code Playgroud)

不能像这样重写:

$(this +" div")
Run Code Online (Sandbox Code Playgroud)

无需诉诸:

$('#'+$(this).attr("id")+" div")
Run Code Online (Sandbox Code Playgroud)

另外,你能在JQuery文档中指出'this'吗?由于显而易见的原因,很难将"this"用作搜索词.

Nic*_*ver 17

this不是jQuery"的东西",而是一个基本的JavaScript.它不能像你在示例中那样重写,因为它是一个对象,特别是DOM元素或jQuery对象(取决于你所处的上下文).所以,如果你这样做:

 $(this + " div")
Run Code Online (Sandbox Code Playgroud)

什么你真的做的是呼吁.toString()this来连接字符串,导致:

 $("[object Object] div")
Run Code Online (Sandbox Code Playgroud)

....这不是一个有效的选择器.

至于进一步阅读,我相信这篇文章仍然是学习this(上下文关键字)含义的最佳参考/资源之一.


根据评论请求,this各种地方的一些例子:

  • 事件处理程序,例如: $("selector").click(function() { alert(this); });
    • this 指触发事件处理程序的DOM元素.
  • 在jQuery插件中,例如: $.fn.myPlugin = function() { alert(this); });
    • this是插件被调用/链接的jQuery对象,例如:$("selector").myPlugin();,this$("selector")jQuery对象.
  • 在任何通用函数内部,例如: function myFunc() { alert(this); };
    • this 是你所处的背景,无论是一个对象还是其他东西,一些例子:
    • $("selector").click(myFunc);- this是DOM元素,如上所述
    • $("selector").click(function() { myFunc(); });- this是全球内容,window
    • myFunc.call(whatThisIs, arg1, arg2);- thiswhatThisIs


gna*_*arf 7

使用 .find()

$( this ).find( 'div' )
Run Code Online (Sandbox Code Playgroud)

或者使用context参数来jQuery( selector, context )(在内部,它只是调用查找...)

$( 'div', this )
Run Code Online (Sandbox Code Playgroud)