2011-10-22 17 views
20

Mam tabelę, która ma wejście datajquery wiele identyfikatorów samą funkcję

<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> 

próbuję uzyskać do niego dostęp za pośrednictwem dla pierwszego

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

Jak uzyskać dostęp do wszystkiego?

Odpowiedz

50

Można użyć "attribute starts-with" selektora:

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

To selektor będzie pasował do dowolnego input element, którego id wartość zaczyna się od "datepicker". Alternatywą byłoby nadanie wszystkim wymaganym elementom wspólnej klasy.

Można również wybrać wiele elementów przez id podstawie listy oddzielonych przecinkami:

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

Ale to nie jest szczególnie skalowalne jeśli kiedykolwiek trzeba dodać więcej wejść.

10

Najlepszym sposobem jest użycie klasy:

<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> 

ale można również użyć tego:

<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> 

Drugie podejście nie jest zalecane.

+1

Dlaczego używać każda funkcja w pierwszym przykładzie, zamiast dzwonić datepicker na liście węzłów jak drugi? – mikerobi

+0

@mikerobi lol dobry punkt XD być może możesz przesłać odpowiedź jako taką? –

+0

Dziękuję @JosephMarikle – sradha

0

Zamiast identyfikatorów należy użyć klasy CSS o nazwie podobnej do has-datepicker i wyszukać.

4

Jak rozumiem Twoje pytanie, próbujesz wybrać wiele identyfikatorów za pomocą jQuery. Oto, jak to zrobić:

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

Po prostu oddzielaj identyfikatory przecinkami.

Ale to nie jest najlepszy sposób, aby to osiągnąć. naprawdę powinieneś użyć klasy: przypisanie każdemu td klasę i zastosowanie:

$('td.myClass') 

Alternatywnie, można przypisać identyfikator do stołu i wybrać wszystkie jej td dzieci. HTML:

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

jQuery:

$('table#myTable td') 
0

jQuery UI automatycznie dodaje klasę "hasDatePicker" do wszystkich elementów, które mają wyboru daty. Możesz zapytać stronę o coś podobnego do $ ("input.hasDatePicker"), aby uzyskać wszystkie narzędzia do wybierania daty.

+0

Nie wcześniej niż "datepicker" został zastosowany do elementu (jak w tym przypadku ...) –

+0

Ah, czytałem pierwotne pytanie źle, myślałem, że oryginalne pytanie pytanie o dostęp do nich, nie tworząc ich, ale wydaje mi się, że OP dostarczył fragment kodu, w którym pokazał, że tworzy jeden ... – ima007

0

Można to wykorzystać jako dobrze $('#datepicker0,#datepicker1,#datepicker2,#datepicker3,#datepicker4)

Powiązane problemy