2012-12-14 9 views
5

Obecnie mam kodu, który wygląda tak:Jak sprawić, by ten kod działał bez jQuery?

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

muszę dokonać mniejszy rozmiar pliku, ale nie wiem jak do replikacji kodu w „waniliowy” javascript. Proszę pomóż!

+0

byłoby to dość trudne zadanie bez jquery. –

+0

Oto dlaczego napisałem to pytanie, mając nadzieję, że ktoś wie jak. – SeinopSys

+0

jakie kroki zostały podjęte, aby go przepisać? –

Odpowiedz

6

Bez wsparcia IE6/7 jest to bardzo proste.

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'); 
} 

Jeśli trzeba wspierać IE6/7, to wciąż bardzo proste, ale dobrze byłoby mieć metodę, która wybiera elementy o klasie, lub przynajmniej, że testy dla klasy.

Nie trudno znaleźć ich implementację w Internecie.


Oto szybka implementacja, która obsługuje starszy 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'); 
    } 
} 

Zakłada ona, że ​​.className nie będzie miał inne zajęcia gdzie "guide-item" byłyby dopasowane jako sub-wzorca.

+0

Dziękuję, to się uda! – SeinopSys

+0

Nie ma za co. –

+0

Właściwie pojawia się błąd: 'Nie można wywołać metody 'removeChild' of undefined' na' els [i] .parentNode.removeChild (els [i]) ' – SeinopSys

Powiązane problemy