2010-02-01 31 views
8

Tôi thấy lỗi tôi không thể sao chép từ một nhóm nhỏ người dùng. Đây là mã:jQuery: Chỉ có IE, đầu vào: được chọn trả về 0 ngay cả khi các mục được chọn

var selected = $('#mytable input:checked'); 
if (selected.length == 0) { 
    $('body').trigger('notice', 'Please select some items first'); 
    return; 
} 

Ngay cả khi người dùng chọn nhiều hộp kiểm, trình kích hoạt "thông báo". Có vẻ như selected.length là số không khi nó không được.


[UPDATE] Bộ chọn hoạt động khi nó được cập nhật thành:

var selected = $('input[class="selection"]:checked'); 

Nó dường như bao gồm id trong bộ chọn phá vỡ mọi thứ, chỉ có trên IE.


Mã này đang làm việc cho phần lớn người dùng và chúng tôi không thể sao chép vấn đề, nhưng cho người dùng thấy sự cố nhất quán và xảy ra mọi lúc.

Dường như nó bị cô lập với IE (mặc dù tôi không thể chắc chắn). Chúng tôi đang sử dụng jQuery 1.3.2 (từ google CDN).

Bất kỳ ý tưởng nào?

Trả lời

2

Sẽ là một ý tưởng hay khi dán trình xử lý sự kiện/mã xung quanh của bạn. Đối với một điểm khởi đầu, tôi sẽ đề nghị sử dụng bộ chọn :checkbox trong dòng đầu tiên của bạn:

$('#mytable input:checkbox:checked') 

Sổ tay nói:

$(':checkbox') tương đương với $('*:checkbox'), vì vậy $('input:checkbox') nên được sử dụng để thay thế.

Tất nhiên, điều đó có thể không tạo ra bất kỳ sự khác biệt nào. :checkbox tương đương với $('[type=checkbox]'), do đó, có thể là IE đang nghẹt thở trên phần input:checked của bộ chọn đang thử nghiệm tất cả các yếu tố đầu vào cho trạng thái checked.

1

Tôi gặp phải một vấn đề tương tự, trong cuộc sống của tôi, tôi không thể khiến IE nhận ra một hộp đã được 'kiểm tra' theo lập trình bởi một trình xử lý sự kiện khác.

viện đến:

$("input[name='iptName'][CHECKED]").size() 

Rõ ràng, IE (của 8 hương vị khác nhau) là nhạy cảm về trường hợp. ': checked', ': CHECKED' và '[checked]' không hoạt động.

Bất kỳ ai khác đều gặp phải vấn đề này?

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