2010-01-05 37 views
6

Điều tôi đang cố gắng hoàn thành: Tôi muốn thêm DIV sau một DIV hiện có và gán cho nó một lớp cụ thể.Gắn DIV và ngay lập tức thêm lớp vào jQuery

tôi bắt đầu với điều này:

var myClass = "thisIsMyClass"; 
$(this).after("<div></div>").addClass(myClass) 

Vấn đề với đó là myClass được thêm vào $ (this) chứ không phải là DIV mới được tạo ra.

Vì vậy, tôi đã đưa ra một thử này:

var myClass = "thisIsMyClass"; 
$(this).after("<div class='" & thisIsMyClass & "'></div>") 

Nhưng jQuery không thích điều đó một trong hai.

tôi thể làm điều này, tuy nhiên:

$(this).after("<div class='thisIsMyClass'></div>") 

jQuery là OK với cú pháp đó. Tất nhiên, tôi mất khả năng chuyển nó thành một biến.

Tôi đoán tôi đang làm điều gì đó khá rõ ràng là sai. Nhưng tôi bị choáng váng như vậy.

Trả lời

13
$(this).after($("<div></div>").addClass(myClass)); 
+0

Tôi không có ý tưởng tại sao nó không bao giờ xảy ra với tôi, nhưng tôi không bao giờ nghĩ rằng tổ tuyên bố trong jQuery. Cảm ơn, Kobi! –

5

có lẽ cái gì đó như:

var myClass = "thisIsMyClass"; 
var div = $("<div></div>").addClass(myClass); 
$(this).after(div); 

sử dụng công việc & didnt vì đây không phải là VB, nối chuỗi được thực hiện với +

+0

"vì đây không phải là vb". DOH! (Tôi đang tát trán của tôi ngay bây giờ). Rõ ràng là tôi đã không ngủ đủ giấc đêm qua. –

+0

nó có thể xảy ra với bất cứ ai :) –

3
các

tôi thường kết thúc làm một cái gì đó như thế này:

var myClass = 'thisIsMyClass'; 
$(this).after($("<div/>").addClass(myClass)); 
0

Bạn đã thử sử dụng "+ "ký tự thay vì" & "? Và nhân tiện, tôi không thấy bất kỳ dấu chấm phẩy nào ở cuối một số lệnh, điều đó có thể sai không?

var myClass = "thisIsMyClass"; 
$(this).after("<div class='"+ thisIsMyClass +"'></div>"); 
2
$("<div></div>").insertAfter(this).addClass(myClass); 
+0

Đó là một lựa chọn thú vị. Cảm ơn! –

2

Các JQuery sau khi phương thức trả về bộ chọn tương tự mà bạn gọi là sau khi về để cho phép phương pháp chaining (cũng như hầu hết các phương pháp JQuery), đó là lý do tên lớp của bạn đang diễn ra đến yếu tố này.

Để làm điều này bạn có thể làm:

$(this).after($('<div class="' + myClass + '"></div>')); 

hoặc đảo ngược thứ tự chọn:

$('<div></div>').insertAfter($(this)).addClass('thisIsMyClass'); 
0

Tôi đã làm điều này vì nó siêu dễ đọc khi tôi truy cập mã sau

$('#description').append('<p></p>'); 
$('#description p:last-child').addClass('name'); 
0

Mặc dù Trả lời rất muộn nhưng đó là giải pháp cụ thể cho các câu hỏi trên.Bạn có thể thêm div một lớp cho bất kỳ bộ chọn nào qua js như sau:

$('<div/>',{ class : 'sample'}).appendTo("body"); 
Các vấn đề liên quan