我需要帮助理解$(this)。是否有可能在括号内缩小“this”的焦点,或者“this”是否排除使用任何其他属性?
例如:我不明白为什么这段代码:
$(this).children("div")
无法像这样重写:
$(this +" div")
无需诉诸:
$('#'+$(this).attr("id")+" div")
另外,你能在JQuery文档中指出'this'吗?由于显而易见的原因,很难将“this”用作搜索词。
答案 0 :(得分:17)
this
不是jQuery“的东西”,而是basic JavaScript one。它不能像你在示例中那样重写,因为它是一个对象,特别是DOM元素或jQuery对象(取决于你所处的上下文)。所以如果你这样做了:
$(this + " div")
您真正正在做的是在.toString()
上调用this
来连接字符串,从而产生:
$("[object Object] div")
....这不是一个有效的选择器。
至于进一步阅读,我相信this article仍然是了解this
(上下文关键字)含义的最佳参考/资源之一。
根据评论请求,this
在不同地方的一些例子:
$("selector").click(function() { alert(this); });
this
指的是触发事件处理程序的DOM元素。$.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);
- this
是whatThisIs
Function.call()
和Function.apply()
答案 1 :(得分:6)
使用.find()
$( this ).find( 'div' )
或者使用context
参数jQuery( selector, context )
(在内部,它只是调用find ...)
$( 'div', this )
答案 2 :(得分:0)
this
不是表示css选择器的字符串(例如div
,#my_id
或.my_class
)。
当传递this
作为jQuery函数的参数时,它会返回一个基于当前元素的jQuery对象(这是对它的引用),所以你不能使用像$(this + selector)
这样的东西。
答案 3 :(得分:0)
您可以看一下: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")
答案 4 :(得分:0)
首先,您必须了解什么是此,这取决于上下文。 当你调用$ function时,它将返回一个jQuery对象。
$(this).children("div")
这意味着从特定对象获取所有孩子,请参阅以下链接: http://jsfiddle.net/vietean/f2Yrg/