我不明白当你做一连串的.show()时会发生什么。我也没有写这段代码或者想知道如何弄清楚这里发生了什么。因此这个问题。
// Remove favorite category
$(".FavoriteRemove").click(function() {
var cat = $(this).parents(".Category"); //the parent of the clicked item is the category/bundle
var catid = $(this).attr("catid"); //the id tag on the clicked item is the BundleID
$.post($(this).attr("href"), function() { //the href tag is the post URL for adding a favorite
cat.remove(); //here we remove the category/bundle
//*** WHAT IS THIS DOING? v
$(".Category[catid=" + catid + "]").show().parent().show();
//*** NO THAT UP THERE ^
if ($(".FavoriteCategories div").length == 0)
$(".FavoriteCategories").hide();
//bindCategories();
});
return false;
});
有人可以描述这意味着什么吗?我知道目标是类'Category',其属性与ID匹配,但我不明白函数链的含义。
感谢。
答案 0 :(得分:4)
show()
(docs)具有类Category
的元素,catid
属性具有给定变量的值。parent()
(docs)方法遍历其父级。show()
(docs)父母。“正在显示”表示将其display
样式属性从none
设置为其初始(或默认)值,例如block
。
答案 1 :(得分:3)
在JavaScript中,您可以直接“使用”函数调用的返回值,而无需将值赋给变量。 Here is a stripped down example:
var john = {
me: function() {
alert('...John');
}
}
var foo = {
call: function() {
alert('You called..');
return this; // <- note that an object is returned
}, // (in this case foo itself but could be any object)
callSomeoneElse: function() {
alert('You called..');
return john; // <- note that an object is returned
},
me: function() {
alert('...me');
}
}
foo.call().me()
foo.callSomeoneElse().me()
现在进行方法调用:
如果你有
$(selector).show()
然后将显示所选元素。 show
再次返回所选元素集(由$(selector)
选择的相同元素)。这允许我们在它们上调用另一个方法:parent()
选择(返回)这些元素的父节点(所以我们现在有一个不同的集合),第二个show()
对这个新的(父)集合进行操作(并返回父集)。
所以
$(selector).show().parent().show()
将显示所选元素及其父母。
整个概念称为fluent interface,通过method chaining实现。
答案 2 :(得分:2)
$(".Category[catid=" + catid + "]").show().parent().show();
它将显示(使可见)具有类Category
的元素和设置为变量 catid 的catid,并且它将显示父元素:
<div>
<span class="Category" catid="1"></span>
</div>
在这种情况下,它会显示span和div。