2012-12-14 17 views
5

Attualmente ho un codice che assomiglia a questo:Come far funzionare questo codice senza jQuery?

$('a.guide-item[href="/"]').remove(); 
$('*[href="/"]').attr('href','/feed/subscriptions/u'); 

ho bisogno di fare le dimensioni del file, ma non so come replicare il codice in javascript "vanilla". Per favore aiuto!

+0

questo sarebbe piuttosto impegnativo da fare senza jquery. –

+0

Ecco perché ho postato la domanda, sperando che qualcuno sappia come. – SeinopSys

+0

quali passi hai intrapreso per riscriverlo? –

risposta

6

Senza supportare IE6/7, è molto semplice.

var els = document.querySelectorAll('a.guide-item[href="/"]'); 

for (var i = 0; i < els.length; i++) { 
    if (els[i].parentNode) 
     els[i].parentNode.removeChild(els[i]); 
} 

els = document.querySelectorAll('*[href="/"]'); 

for (i = 0; i < els.length; i++) { 
    els[i].setAttribute('href','/feed/subscriptions/u'); 
} 

Se è necessario supportare IE6/7, è ancora molto semplice, ma sarebbe utile avere un metodo che seleziona gli elementi per classe, o per lo meno che i test per una classe.

Non è difficile trovare implementazioni di questi sul web.


Ecco una rapida implementazione che supporterà il vecchio IE.

var els = document.links, 
    i = els.length; 

while (i--) { 
    if (els[i].getAttribute("href") !== "/") 
     continue; 

    if (els[i].className.indexOf("guide-item") !== -1) { 
     els[i].parentNode.removeChild(els[i]); 
    } else { 
     els[i].setAttribute('href','/feed/subscriptions/u'); 
    } 
} 

Si presuppone che l'.className non avranno altre classi dove "guide-item" potrebbe essere eguagliato come un sub-modello.

+0

Grazie, questo farà perfettamente! – SeinopSys

+0

Prego. –

+0

In realtà, ho un errore: 'Impossibile chiamare il metodo 'removeChild' di undefined' su' els [i] .parentNode.removeChild (els [i]) ' – SeinopSys

Problemi correlati