Reklama: Najlepszy program partnerski w sieci , KLIKNIJ

Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Maciej Szczepański www, marketing,
reklama

Temat: Dodawanie rozszerzenia jako klasy

Witam, chciałbym pobrać rozszerzenie pliku i podstawić je do <a> jako klasę. Napisałem coś takiego ale pogubiłem się i nie wiem gdzie mam błąd.

Kod

var fileTypes = {
doc: 'doc',
xls: 'xls',
pdf: 'pdf'
};

$.each(fileTypes, function(extension,image) {
$('a[href$="' + extension + '"]').addClass(function() {
$(' + extension + ');
});
});
Maciej Szczepański edytował(a) ten post dnia 01.12.11 o godzinie 19:58
1.12.2011, 19:57

Temat: Dodawanie rozszerzenia jako klasy

Może coś w ten deseń:

http://jsfiddle.net/GAyHw/1/rafał krupiński edytował(a) ten post dnia 01.12.11 o godzinie 20:30
1.12.2011, 20:22

Maciej Szczepański www, marketing,
reklama

Temat: Dodawanie rozszerzenia jako klasy

Świetnie!

A jak zrobić addClass? Teraz jeśli <a> ma jakąś klasę to jQ podmienia ją a wolałbym aby dodawał nową.
1.12.2011, 20:30

Temat: Dodawanie rozszerzenia jako klasy

Hmm... można np sprawdzić czy element nie ma już przypadkiem takiej klasy i dopisać ją:

http://jsfiddle.net/GAyHw/2/
1.12.2011, 20:49

Maciej Szczepański www, marketing,
reklama

Temat: Dodawanie rozszerzenia jako klasy

Ok i jeszcze jedna rzecz mi przyszła do głowy. Co bedzie jak np. dodam plik nowego worda? On ma rozszerzenie "docx" czyli 4 znaki.

"href.length - 3, 3" chyba tutaj nie zadziała, prawda?
1.12.2011, 20:58

Temat: Dodawanie rozszerzenia jako klasy

Nie* :) W przykładzie, który podałem jest chyba najprostsze sprawdzenie z możliwych.

* - tzn będzie działać, ale test będzie dla stringa 'ocx' i taką klasę dostanie link. Nie urządza Cię to? :)
1.12.2011, 21:08

Maciej Szczepański www, marketing,
reklama

Temat: Dodawanie rozszerzenia jako klasy

W sumie racja ;)

Ten przykład z dopisaniem klasy coś mi nie działa..

http://jsfiddle.net/GAyHw/2/
1.12.2011, 21:14

Temat: Dodawanie rozszerzenia jako klasy

Aj, rzeczywiście.

W tablicy ze 'znanymi' rozszerzeniami musi się wtedy znaleźć 'ocx' (nie 'docx').
1.12.2011, 21:24

Maciej Szczepański www, marketing,
reklama

Temat: Dodawanie rozszerzenia jako klasy

rafał krupiński:
Aj, rzeczywiście.

W tablicy ze 'znanymi' rozszerzeniami musi się wtedy znaleźć 'ocx' (nie 'docx').

Nie, bez tego tez mi nie działa...
1.12.2011, 21:37

Temat: Dodawanie rozszerzenia jako klasy

weź też pod uwagę, że getElementsByTagName zwraca NodeList, który w niektórych przeglądarkach (ie) nie wpadnie do tego for-a...

a skoro już chcesz przez substringa wyciagac rozszerzenie pliku (brrr), to mozesz splitować hrefa po kropkach i wziac ostatni element powstalej tablicy albo znaleźć lastIndexOf('.') i wyciac do konca...Lidia Wilczyńska edytował(a) ten post dnia 01.12.11 o godzinie 21:46
1.12.2011, 21:42

Maciej Szczepański www, marketing,
reklama

Temat: Dodawanie rozszerzenia jako klasy

Kurcze generalnie problem mam z dodaniem "+ image +". Napisałem coś takiego żeby zamiast klasy podstawiał się styl. I działa.


var fileTypes = {
doc: 'doc.gif',
xls: 'xls.gif',
pdf: 'pdf.gif'
};

$.each(fileTypes, function(extension,image) {
$('a[href$="' + extension + '"]').
css({
paddingLeft: '20px',
paddingTop: '2px',
paddingRight: '0px',
background: 'transparent url("http://www.bisztrai.com/wp-content/themes/wp-framework/library/media/images/' + image + '") no-repeat center left'
});
});


Teraz jak zamiast ".css" zrobic ".addClass". Jestem na stronie jQuery i nie ma tam wyjaśnienia. No chyba że źle szukam...
1.12.2011, 21:52

Temat: Dodawanie rozszerzenia jako klasy

oh God.

twój poprzedni kod (do podmiany klasy CSS):

$('a[href$="' + extension + '"]').addClass(function() {
$(' + extension + ');
});


po przeróbce

$('a[href$="' + extension + '"]').addClass(fileTypes[extension]);


hmm?Lidia Wilczyńska edytował(a) ten post dnia 01.12.11 o godzinie 22:03
1.12.2011, 22:02

Temat: Dodawanie rozszerzenia jako klasy

Lidia Wilczyńska:
weź też pod uwagę, że getElementsByTagName zwraca NodeList, który w niektórych przeglądarkach (ie) nie wpadnie do tego for-a...

ie9, 8(tryb) i 7(tryb) wpada

a skoro już chcesz przez substringa wyciagac rozszerzenie pliku (brrr), to mozesz splitować hrefa po kropkach i wziac ostatni element powstalej tablicy albo znaleźć lastIndexOf('.') i wyciac do konca...

biorąc ostatnią pozycję po splicie i tak zakładasz, że w linku nie ma parametru z '.' w środku...
1.12.2011, 22:05

Maciej Szczepański www, marketing,
reklama

Temat: Dodawanie rozszerzenia jako klasy

Lidia Wilczyńska:
oh God.

twój poprzedni kod (do podmiany klasy CSS):

$('a[href$="' + extension + '"]').addClass(function() {
$(' + extension + ');
});


po przeróbce

$('a[href$="' + extension + '"]').addClass(fileTypes[extension]);


hmm?

Yeah! Dokładnie o to chodziło.

Bóg zapłać, całuję raczki.
1.12.2011, 22:38

Temat: Dodawanie rozszerzenia jako klasy

rafał krupiński:
Lidia Wilczyńska:
weź też pod uwagę, że getElementsByTagName zwraca NodeList, który w niektórych przeglądarkach (ie) nie wpadnie do tego for-a...

ie9, 8(tryb) i 7(tryb) wpada

Juz nie chcę flejmować, bo autor znalazł co chciał, ale...
ufasz trybom zgodnosci ie9 przy sprawdzaniu kompatybilnosci wstecznej? Oj... to zdecydowanie nie jest dobry pomysł

a skoro już chcesz przez substringa wyciagac rozszerzenie pliku (brrr), to mozesz splitować hrefa po kropkach i wziac ostatni element powstalej tablicy albo znaleźć lastIndexOf('.') i wyciac do konca...

biorąc ostatnią pozycję po splicie i tak zakładasz, że w linku nie ma parametru z '.' w środku...

zakladam, tak jak i Ty zalozyles w swoim algorytmie, po prostu wymyslam jego altenatywna wersje, zamiast proponowac nowy ;P Whatever
1.12.2011, 22:41

Temat: Dodawanie rozszerzenia jako klasy

Lidia Wilczyńska:

Juz nie chcę flejmować, bo autor znalazł co chciał, ale...
ufasz trybom zgodnosci ie9 przy sprawdzaniu kompatybilnosci wstecznej? Oj... to zdecydowanie nie jest dobry pomysł

Abyś lepiej spała - działa też w natywnych, z szóstką włącznie.

zakladam, tak jak i Ty zalozyles w swoim algorytmie, po prostu wymyslam jego altenatywna wersje, zamiast proponowac nowy

Żeby 'poflejmować' ?

Pozdrawiam :>
1.12.2011, 23:03

Temat: Dodawanie rozszerzenia jako klasy

rafał krupiński:
Lidia Wilczyńska:

Juz nie chcę flejmować, bo autor znalazł co chciał, ale...
ufasz trybom zgodnosci ie9 przy sprawdzaniu kompatybilnosci wstecznej? Oj... to zdecydowanie nie jest dobry pomysł

Abyś lepiej spała - działa też w natywnych, z szóstką włącznie.
Wkleiłam wczoraj Twój pierwszy kod z JSperfa i wywalił mi błedy w ie8 ;) fakt - moje niedopatrzenie - błedy nie wynikały z iteracji po nodelist tylko z tego ifa w środku.

zakladam, tak jak i Ty zalozyles w swoim algorytmie, po prostu wymyslam jego altenatywna wersje, zamiast proponowac nowy

Żeby 'poflejmować' ?
Nie, żeby ulepszyć Twoje rozwiązanie i nie głowić się nad lepszym ;)

Pozdrawiam :>
Peace ;)Lidia Wilczyńska edytował(a) ten post dnia 02.12.11 o godzinie 18:57
2.12.2011, 18:42

Temat: Dodawanie rozszerzenia jako klasy

Lidia Wilczyńska:
rafał krupiński:
Lidia Wilczyńska:

Juz nie chcę flejmować, bo autor znalazł co chciał, ale...
ufasz trybom zgodnosci ie9 przy sprawdzaniu kompatybilnosci wstecznej? Oj... to zdecydowanie nie jest dobry pomysł

Abyś lepiej spała - działa też w natywnych, z szóstką włącznie.
Wkleiłam wczoraj Twój pierwszy kod z JSperfa i wywalił mi błedy w ie8 ;) fakt - moje niedopatrzenie - błedy nie wynikały z iteracji po nodelist tylko z tego ifa w środku.

zakladam, tak jak i Ty zalozyles w swoim algorytmie, po prostu wymyslam jego altenatywna wersje, zamiast proponowac nowy

Żeby 'poflejmować' ?
Nie, żeby ulepszyć Twoje rozwiązanie i nie głowić się nad lepszym ;)

Pozdrawiam :>
Peace ;)

Peace ;)
2.12.2011, 22:17



Wyślij zaproszenie do