2013-01-13 25 views
17

tôi đang tạo ra div theo cách sauTạo div với các thuộc tính dữ liệu

$('<div/>', { 
    "class" : 'draggable player' + player + ' unit unit' + unit 
}) 

Và tôi không thể tìm thấy những gì thuộc tính khác mà tôi có thể gán cho nó giống như cách tôi gán lớp. đặc biệt là nếu tôi có thể chỉ định data hoặc attr?

+0

... bạn đã thử chưa? – JJJ

Trả lời

28

Theo jQuery()function documentation (bí danh của $()), bạn có thể xác định thuộc tính, sự kiện và phương pháp trong vòng thứ hai tham số.

Vì vậy, có, mọi thứ bạn định nghĩa bằng cách sử dụng attr() là trò chơi công bằng. Điều đó bao gồm các thuộc tính “dữ liệu bất cứ điều gì” (có thể truy cập một cách kỳ lạ qua $elem.data('whatever')), tuy nhiên chúng sẽ không được lưu vào jQuery.data như bất kỳ biến nào được xác định qua $elem.data('name', 'value') (ít nhất là cho đến khi bạn gọi $elem.data('whatever') - xem http://api.jquery.com/jQuery.data/#entry-longdesc-1).

Vì vậy, để làm rõ:

var $elem = jQuery('<div/>', { 'data-test': "Testing" }); 

sẽ tạo ra yếu tố này, và trả về một đối tượng jQuery chứa nó:

<div data-test="Testing"></div> 

Từ đó, bạn sẽ có thể làm:

jQuery.data($elem[0], 'test'); // => undefined 
$elem.data('test');   // => "Testing" 
jQuery.data($elem[0], 'test'); // => "Testing" 

Tất nhiên, $elem.attr('data-test') cũng sẽ hoạt động.

+0

Tôi đoán nó là 'elem' hơn' $ elem'. Nói PHP? ;) – Atmocreations

+2

Biến JS tiền tố với '$' là một thực tế khá phổ biến để xác định các đối tượng jQuery. –

+0

ah - rất vui được biết, cảm ơn. Không nên có được anyways tấn công =) – Atmocreations

12

Bạn có thể gán bất kỳ thuộc tính bạn muốn:

$('<div/>', { 
    "class" : 'draggable player' + player + ' unit unit' + unit, 
    "data-info": 'Anything you want', 
    "even-non-validating-attributes": 'ANYTHING!!' 
}); 

Đây là fiddle: http://jsfiddle.net/vCaym/

Các vấn đề liên quan