2012-03-27 23 views
8

Phát hiện ra điều gì đó và đang xem xét một chút bất bình về lý do tại sao một cách hoạt động và cách khác thì không. Có vẻ như là chỉ một điều IE7 nhưng như IE7, tiếng thở dài, vẫn cần một số hỗ trợ trong ứng dụng tôi làm việc.jQuery tạo yếu tố với sự khác biệt về thuộc tính

Way mà làm việc trong IE7

var month = jQuery('<input/>'); 
month.attr('id', 'DOBmonth'); 
month.attr('title', 'Enter month'); 
month.attr('type', 'text'); 
month.attr('size', '1'); 
month.attr('maxlength', '2'); 
month.attr('class', 'numbersOnly'); 
month.attr('value', mm); 

cách này không làm việc

var month = jQuery('<input/>', { 
     id: 'DOBmonth', 
     title: 'Enter month', 
     type: 'text', 
     size: 1, 
     maxlength: 2, 
     class: 'numbersOnly', 
     value: mm 
     }); 

Bất cứ ai cũng có ý tưởng tại sao chỉ có một cách hoạt động trong IE7 nhưng có thể tốt trong IE8 +, FF, Chrome và Safari.

+2

Bạn nhận được lỗi Javascript sử dụng cách thứ hai trong IE7? –

+0

IE7 và phiên bản cũ hơn có chính sách ghi một lần là 'type' trên các phần tử' input' (khi bạn đã thiết lập nó, bạn không thể thay đổi nó). Đoán (do đó không đăng một câu trả lời), mà vì lý do gì, ví dụ đầu tiên là rơi afoul rằng chính sách và thứ hai không phải là. Một lần nữa, không phải là một câu trả lời * *, nhưng có lẽ một số thông tin chi tiết. –

+0

cũng phải là lớp trong dấu ngoặc kép cho IE – PHearst

Trả lời

21

Câu trả lời có thể được tìm thấy trong API cho chính hàm jQuery().

Lưu ý: Internet Explorer sẽ không cho phép bạn tạo phần tử đầu vào hoặc và thay đổi loại; bạn phải chỉ định loại sử dụng <input type="checkbox" /> chẳng hạn. Một cuộc biểu tình này có thể được nhìn thấy dưới đây:

không được hỗ trợ trong IE:

$('<input />', { 
    type: 'text', 
    name: 'test' 
}).appendTo("body"); 

hỗ trợ workaround:

$('<input type="text" />').attr({ 
    name: 'test' 
}).appendTo("body"); 
+0

Aww. Cảm ơn các liên kết. Tôi đã bỏ lỡ phần ban đầu đọc nó. –

3

according to jQuery:

Lưu ý: trình duyệt Internet Explorer sẽ không cho phép bạn tạo đầu vào hoặc phần tử nút và thay đổi loại của nó; bạn phải xác định loại

này không làm việc:

$('<input />', { 
    type: 'text', 
    name: 'test' 
}).appendTo("body"); 

nhưng điều này không:

$('<input type="text" />').attr({ 
    name: 'test' 
}).appendTo("body"); 
Các vấn đề liên quan