JQuery $(this)选择器function和限制

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

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

$(this).children("div") 

不能像这样重写:

 $(this +" div") 

而不必诉诸于:

 $('#'+$(this).attr("id")+" div") 

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

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

  $(this + " div") 

真正要做的是调用.toString()来连接字符串,结果是:

  $("[object Object] div") 

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

至于进一步阅读,我相信这篇文章仍然是了解this (一个上下文关键字)意味着什么的最佳参考/资源之一。


根据评论请求,在不同的地方有一些例子:

  • 事件处理程序,例如: $("selector").click(function() { alert(this); });
    • this指的是触发事件处理程序的DOM元素。
  • 在jQuery插件中,例如: $.fn.myPlugin = function() { alert(this); }); $.fn.myPlugin = function() { alert(this); });
    • this是插件被调用/链接的jQuery对象,例如: $("selector").myPlugin();this就是$("selector") jQuery对象。
  • 在任何generics函数内部,例如: function myFunc() { alert(this); }; function myFunc() { alert(this); };
    • this是你所处的背景,无论是对象还是其他东西,只有几个例子:
    • $("selector").click(myFunc);this是DOM元素,如上所述
    • $("selector").click(function() { myFunc(); });this是全球内容, window
    • myFunc.call(whatThisIs, arg1, arg2);this就是whatThisIs
      • 有关详细信息,请参阅Function.call()Function.apply()

使用.find()

 $( this ).find( 'div' ) 

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

 $( 'div', this ) 

this不是表示css选择器的字符串(例如div#my_id.my_class )。
this作为jQuery函数的参数传递时,它返回一个基于当前元素的jQuery对象(这是对它的引用),所以你不能使用像$(this + selector)东西。

你可以看看这个: http : //api.jquery.com/each/

基本上this是回调引用的DOM元素。 您不能执行$(this + " div")因为您要向元素添加字符串。 您首先需要在第三个代码段中获取ID。

顺便说一句, $(this).children("div")$('#'+$(this).attr("id")+" div")

首先, this可能没有ID,在这种情况下,第二种方式根本不起作用。 即使它确实有ID,第二个代码实际上是$(this).find("div") 。 如果你只想要孩子,你必须这样做:

 $('#'+$(this).attr("id") + " > div") 

首先,您必须了解这是什么,它取决于上下文。 当你调用$ function时,它将返回一个jQuery对象。

 $(this).children("div") 

它意味着从特定的对象,获取所有孩子,请看下面的链接: http : //jsfiddle.net/vietean/f2Yrg/