2016-05-16 4 views
1

У меня есть куча элементов, которые я хотел, чтобы преобразовать в массив атрибутов и я использую следующий код:JQuery: Получение имени атрибута из нескольких элементов

var attributes = []; 
$("#id").find("tag").each(function() { 
    attributes.push($(this).attr("attribute")); 
}); 

Есть аккуратнее способ сделать это? Похоже, я использую ножницы, чтобы обрезать ногти.

Недавно я использовал d3, он чувствует, что может быть способ сделать это таким образом, чтобы он выглядел как var attributes = $("#id").find("tag").attr("attribute");, но это просто устанавливает переменную в атрибут первого элемента в выделенном элементе.

ответ

1

Вы можете использовать .map() наряду с .get()

Pass каждый элемент в текущем соответствие устанавливается с помощью функции, создавая новый объект JQuery, содержащий возвращаемые значения.

var attributes = $("#id tag").map(function() { 
    return $(this).attr("attribute"); 
}).get(); 
1

Используйте map() метод, как следующий.

var attributes = $("#id tag").map(function() { 
    return $(this).attr("attribute"); 
}).get(); 
1

Чтобы увеличить каждый элемент внутри html-страницы, используя собственный метод hasAttribute.

var attributes = []; 
$("*").each(function(index,element) 
{ 
    if($(element)[0].hasAttribute("id")) 
    { 
     attributes.push($(this).attr("id")); 
    } 
}); 

alert(JSON.stringify(attributes)); 

Для ориентации конкретных элементов на странице. добавьте некоторые элементы, такие как p, label, h1 и т. д. на страницу html, и попробуйте следующее. Вы также можете предоставить имена идентификаторов или классов в селекторе jQuery, например $ (".Name, #id, tagName") и т. д.

var attributes = []; 
$("p,h1,label").each(function(index,element) 
{ 
    if($(element)[0].hasAttribute("id")) 
    { 
     attributes.push($(this).attr("id")); 
    } 
}); 

alert(JSON.stringify(attributes)); 

В-третьих, вы можете использовать карту mathod. map метод вернет массив.

attributes = $("p,h1").map(function() 
{ 
    return $(this).attr("id"); 
}).get(); 

alert(JSON.stringify(attributes)); 

Второй & третий лучше. Они будут нацелены на конкретные элементы.

Смежные вопросы