jQuery中有一些方法可以獲取所有嵌套子元素嗎?我的意思是從所有嵌套級別完整收集,以便我不需要遞歸調用函數。如何使用jQuery獲取所有嵌套元素?
這裏是我的功能
$.fn.extend({
compressElementsWidth: function() {
var range = { min: 9999, max: 0 };
console.log($(this).contents());
$(this).contents().filter(
function() {
if (this.nodeType == 3)
return this.nodeValue && this.nodeValue.replace(/\s{1,6}/,'') ? $(this) : null;
else
return this.nodeName.match(/IMG|A|GROUP|FIELDSET|INPUT|SELECT|TEXTAREA|BUTTON|SUBMIT/) ? $(this) : null;
}).each(function(e) {
var left = $(this).position();
if (p.left < range.min)
range.min = p.left;
var right = p.left + $(this).width;
if (right > range.max)
range.max = right;
});
var max_width = range.max - range.min;
$(this).contents().filter(
function()
{
if (this.nodeType == 3)
return this.nodeValue && this.nodeValue.replace(/\s{1,6}/,'') ? $(this) : null;
else
return this.nodeName.match(/IMG|A|GROUP|FIELDSET|INPUT|SELECT|TEXTAREA|BUTTON|SUBMIT/) ? $(this) : null;
}).each(function(e) {
$(this).css("max-width:", max_width);
});
}
});
window.onload = function() {
$("div.column-right-outer").compressElementsWidth();
};
所以我需要得到內部的所有元素div.column,右外。您可以在this page上測試此代碼,只需保存它幷包含jQuery和上面的代碼即可。例如在博客檔案中,有大量的鏈接列表,我需要獲取所有鏈接和右列下的所有可見文本。如果有圖像或表單元素,我也需要它們。
遞歸和$(節點).find( 「*」)的結果是約10.000-16.000和極其緩慢的性能。
你打算如何處理所有這些信息? – ntgCleaner
這是一個函數,它應該計算列(包裝器)的「完整內容寬度」。在這個特定的頁面中,它並不是完美的例子。但是,如果要刪除「熱門帖子」列,則應該壓縮列的寬度,以便刪除多餘的寬度。 – user1141649