javascript example - Come ottenere tutti gli ID con jQuery?





guida function (9)


Non un vero array, ma gli objs sono tutti array associativi in ​​javascript.

Ho scelto di non utilizzare un array reale con [] e [] .push perché tecnicamente, puoi avere più ID su una pagina anche se non è corretto farlo. Quindi, solo un'altra opzione nel caso in cui alcuni html hanno ID duplicati

$(function() {

       var oArr = {};
       $("*[id]").each(function() {
           var id = $(this).attr('id');
           if (!oArr[id]) oArr[id] = true;
       });

       for (var prop in oArr)
           alert(prop);

   });

Sto cercando di raccogliere una lista (array) di ID in un settore

<div id="mydiv">
 <span id='span1'>
 <span id='span2'>
</div>

$("#mydiv").find("span"); 

mi dà un oggetto jQuery, ma non un vero array;

posso fare

var array = jQuery.makeArray($("#mydiv").find("span"));

e quindi utilizzare un ciclo for per inserire gli attributi id in un altro array

o posso fare

$("#mydiv").find("span").each(function(){}); //but i cannot really get the id and assign it to an array that is not with in the scope?(or can I)

Ad ogni modo, voglio solo vedere se c'è una scorciatoia in jQuery per farlo;




È una risposta tardiva, ma ora c'è un modo semplice. La versione corrente di jquery ti consente di cercare se esiste un attributo. Per esempio

$('[id]')

ti darà tutti gli elementi se hanno id. Se vuoi che tutti gli span con id inizino con lo span puoi usare

$('span[id^="span"]')



HTML

<div id="mydiv">
 <span id='span1'>
 <span id='span2'>
</div>

JQuery

var IDs = [];
$("#mydiv").find("span").each(function(){ IDs.push($(this).attr("id")); });



// ma non posso davvero ottenere l'id e assegnarlo a un array che non fa parte dell'ambito? (o posso)

Si, puoi!

var IDs = [];
$("#mydiv").find("span").each(function(){ IDs.push(this.id); });

Questa è la bellezza delle closures .

Nota che mentre eri sulla buona strada, sighohwell e sighohwell sottolineano entrambi modi più affidabili e concisi per ottenere ciò, sfruttando i filtri degli attributi (per limitare gli elementi abbinati a quelli con ID) e la funzione built-in map() jQuery:

var IDs = $("#mydiv span[id]")         // find spans with ID attribute
  .map(function() { return this.id; }) // convert to set of IDs
  .get(); // convert to instance of Array (optional)



for(i=1;i<13;i++)     
{

   alert($("#tdt"+i).val());  

}  



Il metodo .get () restituirà un array da un oggetto jQuery. Inoltre puoi usare .map per proiettare qualcosa prima di chiamare get ()

var idarray = $("#myDiv")
             .find("span") //Find the spans
             .map(function() { return this.id; }) //Project Ids
             .get(); //ToArray



Il mio consiglio?

var arr = $.map($("#mydiv [id]"), function(n, i) {
  return n.id;
});

potresti anche farlo come:

var arr = $.map($("#mydiv span"), function(n, i) {

o

var arr = $.map($("#mydiv span[id]"), function(n, i) {

o anche solo:

var arr = $("#mydiv [id]").map(function() {
  return this.id;
});

Un sacco di modi in pratica.




È possibile ottenere gli ID dei tag specifici e inviarli a un altro elemento. Per esempio:

$("input").map(function() {
    $( "textarea" ).append(this.id+"\n");
});

Otterrà tutti gli ID di input e lo invierà a textarea.




Usare RegExp in JavaScript potrebbe fare il lavoro per te, semplicemente fai qualcosa di simile qui sotto:

var str ="Test abc test test abc test test test abc test test abc";
str = str.replace(/abc/g, '');

Se pensi di riutilizzare, crea una funzione per farlo per te, ma non è raccomandato in quanto è una sola funzione di linea, ma ancora una volta se usi pesantemente questo, puoi scrivere qualcosa come questo:

String.prototype.replaceAll = String.prototype.replaceAll || function(string, replaced) {
  return this.replace(new RegExp(string, 'g'), replaced);
};

e semplicemente usarlo nel tuo codice più e più volte come di seguito:

var str ="Test abc test test abc test test test abc test test abc";
str = str.replaceAll('abc', '');

Ma come detto in precedenza, non farà un'enorme differenza in termini di righe da scrivere o prestazioni, solo il caching della funzione potrebbe avere delle prestazioni più veloci su stringhe lunghe e anche una buona pratica del codice DRY se si desidera riutilizzare.





javascript jquery