Có một số cách để thực hiện.
Hoặc một trong những điều sau đây nên thực hiện thủ thuật.
// METHOD A (ARRAY.FILTER, STRING.INDEXOF)
var siblings = function(node, children) {
siblingList = children.filter(function(val) {
return [node].indexOf(val) != -1;
});
return siblingList;
}
// METHOD B (FOR LOOP, IF STATEMENT, ARRAY.PUSH)
var siblings = function(node, children) {
var siblingList = [];
for (var n = children.length - 1; n >= 0; n--) {
if (children[n] != node) {
siblingList.push(children[n]);
}
}
return siblingList;
}
// METHOD C (STRING.INDEXOF, ARRAY.SPLICE)
var siblings = function(node, children) {
siblingList = children;
index = siblingList.indexOf(node);
if(index != -1) {
siblingList.splice(index, 1);
}
return siblingList;
}
FYI: Các jQuery mã cơ bản là một nguồn lực lớn để quan sát Hạng A Javascript.
Đây là một công cụ tuyệt vời cho thấy mã cơ sở jQuery theo cách rất hợp lý. http://james.padolsey.com/jquery/
Lưu ý rằng jquery.siblings() không bao gồm các nút hiện tại từ tập kết quả. – cletus
Đó là một tính năng rất đẹp! – cgp
Trên thực tế, tương đương với node.parentNode.childNodes [] trong jquery thực sự là $ (node) .parent(). Children() không phải $ (node) .siblings(). Nó có thể là một tính năng tốt đẹp nhưng nó cũng có thể gây phiền nhiễu. Nó phụ thuộc vào những gì bạn muốn. – cletus