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/