2011-10-22 33 views
20

Tôi có một bảng mà có một đầu vào ngàyjquery nhiều id cùng chức năng

<td style="background-color:#c6efce"><input type="text" id="datepicker0"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker1"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker2"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker3"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker4"></td> 

Tôi cố gắng để truy cập nó qua cho người đầu tiên một

<script> 
    $(function() { 
     $("#datepicker0").datepicker({ 
      showButtonPanel: true 
     }); 
    }); 
    </script> 

Làm thế nào để truy cập vào tất cả mọi thứ?

Trả lời

50

Bạn có thể sử dụng "attribute starts-with" selector:

$(function() { 
    $("input[id^='datepicker']").datepicker({ 
     showButtonPanel: true 
    }); 
}); 

Đó chọn sẽ phù hợp với bất kỳ yếu tố inputid giá trị bắt đầu với "datepicker". Một thay thế sẽ là cung cấp cho tất cả các yếu tố cần thiết một lớp học phổ biến.

Bạn có thể chọn nhiều yếu tố bởi id sử dụng một danh sách bằng dấu phẩy:

$("#datepicker0, #datepicker1, #datepicker2"); //List as many as necessary 

Nhưng đó không phải là đặc biệt khả năng mở rộng nếu bạn đã bao giờ cần phải bổ sung thêm đầu vào.

10

Cách tốt nhất là sử dụng một lớp:

<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker0"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker1"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker2"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker3"></td> 
<td style="background-color:#c6efce"><input type="text" class="dp" id="datepicker4"></td> 
<script> 
    $(function() { 
     $(".dp").each(function(){ 
      $(this).datepicker({ 
       showButtonPanel: true 
      }); 
     }) 
    }); 
</script> 

nhưng bạn cũng có thể sử dụng này:

<td style="background-color:#c6efce"><input type="text" id="datepicker0"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker1"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker2"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker3"></td> 
<td style="background-color:#c6efce"><input type="text" id="datepicker4"></td> 

<script> 
    $(function() { 
     $("#datepicker0,#datepicker1,#datepicker2,#datepicker3,#datepicker4").datepicker({ 
      showButtonPanel: true 
     }); 
    }); 
</script> 

Cách tiếp cận thứ hai là không đúng đắn.

+1

Tại sao bạn sử dụng một chức năng trong mỗi ví dụ đầu tiên, thay vì gọi datepicker vào danh sách nút như cái thứ hai? – mikerobi

+0

@mikerobi lol điểm tốt XD có lẽ bạn có thể gửi câu trả lời như vậy? –

+0

Cảm ơn bạn @JosephMarikle – sradha

0

Thay vì ID, bạn nên sử dụng lớp CSS có tên là has-datepicker và tìm kiếm điều đó.

4

Khi tôi hiểu câu hỏi của bạn, bạn đang cố gắng chọn nhiều ID bằng jQuery. Đây là cách bạn làm điều đó:

$('#1,#2,#3') 

Bạn chỉ cần tách ID bằng dấu phẩy.

Nhưng, đây không phải là cách tốt nhất để thực hiện việc này. Bạn thực sự nên sử dụng một class: Gán mỗi td lớp và sử dụng:

$('td.myClass') 

Ngoài ra, bạn có thể gán một ID để bàn và chọn tất cả các td con của nó. HTML:

<table id="myTable"> 
    <td>text</td> 
    <td>text</td> 
</table> 

jQuery:

$('table#myTable td') 
0

jQuery UI tự động thêm lớp "hasDatePicker" cho tất cả các yếu tố đó có một chọn ngày. Bạn có thể truy vấn trang cho một cái gì đó như $ ("input.hasDatePicker") để có được tất cả các bộ chọn ngày.

+0

Không phải trước khi 'datepicker' được áp dụng cho phần tử (như trong trường hợp này ...) –

+0

Ah, tôi đã đọc sai câu hỏi ban đầu, nghĩ rằng câu hỏi ban đầu được hỏi về việc truy cập chúng, chứ không phải tạo chúng, nhưng tôi đoán OP đã cung cấp một đoạn mã nơi anh ấy cho thấy anh ấy đang tạo một ... – ima007

0

Bạn có thể sử dụng này cũng $('#datepicker0,#datepicker1,#datepicker2,#datepicker3,#datepicker4)

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