以下
$("#identifier div:first, #idetifier2").fadeOut(300,function() {
// I need to reference just the '#identifier div:first' element
// however $(this) will grab both selectors
});
有没有一种更好的方式去不仅仅是调用$这等给?
以下
$("#identifier div:first, #idetifier2").fadeOut(300,function() {
// I need to reference just the '#identifier div:first' element
// however $(this) will grab both selectors
});
有没有一种更好的方式去不仅仅是调用$这等给?
不,它会分别调用每个句柄的函数。
在您选择的逗号相当于说:
$("#identifier div:first").fadeOut(300,function() {
// $(this) -> '#identifier div:first'
});
$("#idetifier2").fadeOut(300,function() {
// $(this) -> '#identifier2'
});
您可以检查说(未经测试):
$("#identifier div:first, #idetifier2").fadeOut(300,function() {
if($(this).is("#identifier div:first") {
// do something
}
});
但是,如果你想要做不同的事情(如似乎什么从你的帖子),它更好地附加他们分开。
只是检查哪个ID您目前正在处理中$(this)
if(this.id == "identifier"){ //your code goes here }
'this.id'更短(也更快)。 –
你是对的:) –
该ID不包含散列符号。 –
似乎很多人不jQuery的意识到的是,当有多个匹配的选择,无论是功能选择列表之后将在每个单独的选择器上单独调用一个。而
$("#identifier div:first")
and
$("#identifier2")
,将调用指定的fadeOut
功能和它单独的处理程序,每场比赛:
所以$("#identifier div:first, #identifier2")
将分别同时匹配。这意味着每个处理程序将自己的this
值设置为与匹配的选择器匹配。
内部的jQuery的内部,有这样的伪代码的循环,通过所有返回的选择匹配迭代和调用链的下一个功能为每个:
for (var i = 0; i < matches.length; i++) {
jQuery["fadeOut"].call(matches[i], duration, easing, fn);
}
如果你想单独的代码是用于两个不同的比赛,那么它可能是最好只使用两个单独的jQuery的语句:
$("#identifier div:first").fadeOut(300,function() {
// do stuff for #identifier div:first
});
$("#identifier2").fadeOut(300,function() {
// do stuff for #identifier2
});
如果你有块中的大量的代码和它的几乎相同,那么你也可以一个内转移通用代码块:
$("#identifier div:first, #identifier2").fadeOut(300,function() {
if (this.id != "identifier2") {
// execute code that only applies to the #identifier match
}
// execute rest of common code
});
**此**参照当前元素。由于您的选择器最终会找到多个项目,因此它会为每个项目应用** fadeOut **功能。你想要做什么? – alkos333
淡出两个元素,与他们分开工作,然后淡出他们。我可以用不同的方式实现这一点,我知道。然而,我很好奇我将如何在这个庄园中做到这一点。 – rlemon