Adam T.

Adam T. CEO w Czarny Kod
Software House i
CTO/Założyciel w Tap
To...

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Mam coś takiego:

<div class="przyklad"></div>
<div class="przyklad"></div>
<div class="przyklad"></div>
<div class="przyklad"></div>
<div class="przyklad"></div>


A chciałbym za pomocą JSóq otrzymać coś takiego:

<div id="przyklad">
<div class="przyklad"></div>
<div class="przyklad"></div>
<div class="przyklad"></div>
<div class="przyklad"></div>
</div>


Dodanie za pomocą before otworzenia <div> i użycie after aby zamknąć po ostatnim nie działa. Znaczy dodaje, ale w przeglądarce robi się jakaś autokorekta czy coś, i widzi to jako dwa osobne, zamknięte divy.
Jak to ogarnąć najprościej, bo chyba mam chwilowe przydżumienie umysłu.
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Może wstaw ten właściwy div w odpowiednie miejsce, a potem odpal $("div.przyklad").appendTo( "#przyklad" ) ; ? (przykład z jQuery pokazuje tylko dla jednego elementu, więc jakby nie ruszyło, to pokombinuj z .each)Janusz Skudrzyk edytował(a) ten post dnia 24.08.11 o godzinie 14:31
Adam T.

Adam T. CEO w Czarny Kod
Software House i
CTO/Założyciel w Tap
To...

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Niestety muszę przerobić pewien model, gdzie generuje się ileś tam divów jeden pod drogim. Jest ich chyba 40.
Pierwsze kilka muszę umieścić w osobnym divie, ale mogę tylko dokonać tego za pomocą JSów, nie mogę ingerować w to co wrzuca PHP.
Dlatego mam z tym właśnie problem :/
Daniel Częstki

Daniel Częstki senior php developer

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

A czemu tak to chcesz zrobic ?
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Pisząc o wstawianiu we właściwe miejsce miałem na myśli wstawienie przez jQuery. Tworzysz sobie odpowiedni węzeł:

$("#foo").append("<div id="przyklad"></div>")
(można wstawiać do body, albo jako podrzędny do jakiegoś elementu; podobnie z appendem: wstawiasz przed, za albo wewnątrz; czyli dokładnie tak jak robisz teraz, ale z zamknięciem węzła).

I już możesz na nim operować w dalszych krokach.Janusz Skudrzyk edytował(a) ten post dnia 24.08.11 o godzinie 14:44
Olga Grabek

Olga Grabek Senior Software
Engineer

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

wrapAllOlga Grabek edytował(a) ten post dnia 24.08.11 o godzinie 14:43
Adam T.

Adam T. CEO w Czarny Kod
Software House i
CTO/Założyciel w Tap
To...

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Dzięki, za Waszą pomocą poszło dalej :)

EDIT:
Może się przydać

var i = 0;
$j(".przyklad").each(function(){
if (i < 7 ) $j(this).addClass("test");
i++
})
$j(".test").wrapAll('<div id="przyklad" />')
Adam Trojańczyk edytował(a) ten post dnia 24.08.11 o godzinie 14:56
Daniel Częstki

Daniel Częstki senior php developer

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Adam ale po co się męczysz ? ;)
Zrób tak:

$('div.przyklad').wrapAll('<div id="przyklad" />');
Daniel Częstki edytował(a) ten post dnia 24.08.11 o godzinie 15:50
Adam T.

Adam T. CEO w Czarny Kod
Software House i
CTO/Założyciel w Tap
To...

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Tak tak, ale ja dodatkowo musiałem jeszcze objąć tylko pierwsze 7 elementów, a resztę zostawić tak jak jest. Stąd pętelka :)

konto usunięte

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Adam Trojańczyk:
Tak tak, ale ja dodatkowo musiałem jeszcze objąć tylko pierwsze 7 elementów, a resztę zostawić tak jak jest. Stąd pętelka :)

Brzmi jak kod nad ktorym nie chcialbym pracowac ;)

konto usunięte

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Łukasz Nowacki:
Adam Trojańczyk:
Tak tak, ale ja dodatkowo musiałem jeszcze objąć tylko pierwsze 7 elementów, a resztę zostawić tak jak jest. Stąd pętelka :)

Brzmi jak kod nad ktorym nie chcialbym pracowac ;)
bo to "czarnykod" :D
Maciej Kuś

Maciej Kuś właściciel, ibex.pl

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva


$('div.przyklad').slice(0,7).wrapAll('<div id="przyklad" />');


pisane z głowy, ale powinno zadziałaćMaciej Kuś edytował(a) ten post dnia 24.08.11 o godzinie 18:04
Tobiasz Glazar

Tobiasz Glazar Front-End Developer

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

jQuery samo może policzyć do 7:

$('.przyklad:lt(7)').wrapAll('<div id="przyklad"></div>');

http://jsfiddle.net/Hg3jG/

Edyta:
Można sobie sprawdzić, co jest szybsze (łącznie z selektorami):
http://jsperf.com/wrapall-sliceTobiasz Glazar edytował(a) ten post dnia 24.08.11 o godzinie 18:15
Maciej W.

Maciej W. Ruby on what?!

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Meh, Tobiasz mnie ubiegl. Jak jakis moderator bedzie przechodzil to niech usunie ;)Maciej W. edytował(a) ten post dnia 24.08.11 o godzinie 18:12
Maciej Kuś

Maciej Kuś właściciel, ibex.pl

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Można sobie sprawdzić, co jest szybsze (łącznie z selektorami):
http://jsperf.com/wrapall-slice

ciekawe wyniki - w Operze różnica dość znacząca między div.lt i lt

konto usunięte

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Maciej Kuś:
Można sobie sprawdzić, co jest szybsze (łącznie z selektorami):
http://jsperf.com/wrapall-slice

ciekawe wyniki - w Operze różnica dość znacząca między div.lt i lt
https://github.com/jquery/sizzle/blob/93cc46709e0317328...

z tego co na szybko wywnioskowałem:

jeśli dasz w selektorze div.lt
1) wyszukujemy w drzewie wszystkie div (getElementsByTagName)
2) szukamy w znalezionych węzłach klasy lt

jeśli selektorem będzie samo .lt
1) szukamy w drzewie dom wszystkich elementów z klasą lt

wydaje się więc, że w większości przypadków opcja z samą klasą powinna zadziałać szybciej.
Adam T.

Adam T. CEO w Czarny Kod
Software House i
CTO/Założyciel w Tap
To...

Temat: Jquery - jak wszystkie obiekty wrzucić do jednego diva

Dzięki wielkie za pomoc! :)

Następna dyskusja:

JAk skopiowac PLIKI z jedne...




Wyślij zaproszenie do