2009-04-05 32 views
10

Tôi có một danh sách thả xuống và tôi đã ràng buộc một trình xử lý sự kiện thay đổi cho nó. Bất cứ khi nào người dùng chọn một tùy chọn mới, tôi muốn biết nếu nó là tùy chọn cuối cùng của danh sách.Cách tốt nhất để kiểm tra xem tùy chọn hiện được chọn trong danh sách thả xuống có phải là tùy chọn cuối cùng không?

Annoyingly, điều kiện có liên quan trong đoạn mã dưới đây luôn trả về true, cho dù tùy chọn đã được chọn:

 sel.change(function() { 
      //this always returns true! 
      if(jQuery('#' + this.id + ' option').is(':last')) { 
       alert('hello I am the last option'); 
       inputDiv.show(); 
       inputDiv.find("input").attr('disabled',false); 
      } else { 
       inputDiv.hide(); 
       inputDiv.find("input").attr('disabled',true); 
      } 
     }); 

Thậm chí nếu tôi làm điều này, kết quả là như nhau:

if(jQuery('#' + this.id + ' option:selected').is(':last')) { 
... 

Tôi đang làm gì sai? Và nếu bạn biết, tại sao các xét nghiệm đó đều đánh giá đúng?

EDIT: Tìm thấy các giải pháp:

if(jQuery('#' + this.id + ' option:last').is(':selected')) { 
... 
} 

Có ai biết một cách tốt hơn để làm điều này?

+1

Nếu bạn có một giải pháp cho câu hỏi của riêng của bạn, bạn có thể thêm nó như là một câu trả lời không phải là một chỉnh sửa cho câu hỏi. Ngoài ra, tùy chọn không phải jquery bởi porneL có thể hơi nhanh hơn. – bendewey

+0

+1 cho tiêu đề câu hỏi mô tả – Tjorriemorrie

Trả lời

18

Hãy nhìn xem, không có sưng lên!

sel.selectedIndex == sel.length-1 

Đó là W3C standard solution.

+0

Tôi thừa nhận, điều đó tốt hơn. Cảm ơn. – karim79

+0

Tôi hy vọng jQuery có thể làm điều này một cách thanh lịch hơn một chút .. –

+0

Đúng, điều đó không giống với "jQuerish", nhưng phương pháp này đơn giản đến nỗi không cần bất kỳ trình bao bọc tiện lợi nào. – Kornel

10

Hey, đây là một số khác ... và nó là "jQuerish" :)

$("select option:last").is(":selected") 
Các vấn đề liên quan