2013-07-05 29 views
14

bu Verilen: Burada Tam olarak tam olarak ne yapar? (...).

<a href="1">1</a> 
<a href="2">2</a> 

href değer dizisi dönmek için bir işlevdir:

e = $('a').map(function(v) { return $(this).attr('href'); }); 
console.log(e); 

Ama ben sadece dönmek için bu değiştirebilir nasıl

["1", "2", prevObject: x.fn.x.init[2], context: document, jquery: "1.10.2", constructor: function, init: function…] 

verir ham dizi ["1", "2"]?

+0

senin 'console.log' işaret ettiği gibi, bu senin href değerler değildir. –

+2

Bu yüzden * asla * tamamen konsol çıkışına güvenmelisiniz (en azından "console.log", "console.dir" iyi olmalıdır). JQuery nesnesi bir * dizi benzeri * nesnesi olduğu için, 'console.log 'diziyi dizi olarak görüntüler. Diğer tarayıcı farklı bir çıktı gösterebilir. –

+0

Tamam, adil çağrı. Ham bir diziyi döndürmek için nasıl yapılacağına dair herhangi bir öneriniz var mı? (Sorumu David'in konusunu yansıtacak şekilde değiştirdiniz) – user537339

cevap

28

O jQuery.fn.map yeni jQuery nesne döndürür, çünkü dizisini almak için jQuery.fn.get kullanmalıdır şudur: kaynak koduna baktığımızda

:

var a = $('a').map(function(v, node) { 
    // v is the index in the jQuery Object, 
    // you would maybe like to return the domNode or the href or something: 
    // return node.href; 

    return v; 
}).get(); // <-- Note .get() converts the jQuery Object to an array 

Mikro optimizasyon, sizi jQuery.fn.toArray:

işaret ettiğini görebilirsiniz

Yani da arayabilirsiniz:

$('a').map(...).toArray(); 
İlgili konular