2011-10-27 23 views
19

po 2 godzinach poszukiwań postanowiłem zadać moje pytanie.jquery dołączyć div wewnątrz div z id i manipulować

Mam Div:

<div id="box"></div> 

chcę dodać div wewnątrz powyższego div przy użyciu jQuery.

próbowałem (podany kod jest wewnątrz funkcji):

var e = $('<div style="display:block; float:left;width:'+width+'px; height:'+height+'px; margin-top:'+positionY+'px;margin-left:'+positionX+'px;border:1px dashed #CCCCCC;"></div>'); 
$('div', e).attr('id', 'myid'); 
$("#box").append(e); 

ale dostępie $ ("# myid") nie działa.

jakikolwiek pomysł na dodanie div do div i możliwość manipulowania nimi?

dziękuję!

Odpowiedz

29

To tylko złej kolejności

var e = $('<div style="display:block; float:left;width:'+width+'px; height:'+height+'px; margin-top:'+positionY+'px;margin-left:'+positionX+'px;border:1px dashed #CCCCCC;"></div>'); 
$('#box').append(e);  
e.attr('id', 'myid'); 

Dołącz, a następnie dostęp/set atr.

+0

Dlaczego warto używać trzech linii kodu, gdy tylko jedna jest potrzebna? Po co dołączać identyfikator później, kiedy można go umieścić w źródłowym kodzie HTML? – jfriend00

+7

Próbuję tylko rozwiązać pierwotny problem, a nie go poprawić. –

+0

Miałem nadzieję, że PO zorientuje się, że istnieje lepszy sposób na zrobienie tego. – jfriend00

4

Ty overcomplicating rzeczy:

var e = $('<div style="display:block; float:left;width:'+width+'px; height:'+height+'px; margin-top:'+positionY+'px;margin-left:'+positionX+'px;border:1px dashed #CCCCCC;"></div>'); 
e.attr('id', 'myid'); 
$('#box').append(e); 

Na przykład: http://jsfiddle.net/ambiguous/Dm5J2/

0
var e = $('<div style="display:block; id="myid" float:left;width:'+width+'px; height:'+height+'px; margin-top:'+positionY+'px;margin-left:'+positionX+'px;border:1px dashed #CCCCCC;"></div>'); 
$("#box").html(e); 
+0

Metoda '.html()' pobiera ciąg, a nie obiekt jQuery w jego argumentach. – jfriend00

3

dlaczego nie pójść jeszcze prostsze z jednej z tych opcji:

$("#box").html('<div id="myid" style="display:block; float:left;width:'+width+'px; height:'+height+'px; margin-top:'+positionY+'px;margin-left:'+positionX+'px;border:1px dashed #CCCCCC;"></div>'); 

Lub, jeśli chcesz dołączyć do istniejącej treści:

$("#box").append('<div id="myid" style="display:block; float:left;width:'+width+'px; height:'+height+'px; margin-top:'+positionY+'px;margin-left:'+positionX+'px;border:1px dashed #CCCCCC;"></div>'); 

Uwaga: Wstawiłem id="myid" prosto do łańcucha HTML zamiast używać osobnego kodu do ustawienia.

Obie metody jQuery: .html() i .append() mogą przyjmować ciąg znaków HTML, więc nie ma potrzeby używania osobnego kroku do tworzenia obiektów.