jQuery datepicker не работи правилно с клас

Първо, jQuery datepicker работи добре с класове, когато правите ново зареждане на страница. На моя сайт обаче зареждам цялото съдържание чрез Ajax заявки. Първоначално дадох на всяко поле за дата уникален идентификатор и всичко работеше добре при зареждане през ajax.

(Не работи през Ajax)

<script type='javascript'> jQuery(function() {jQuery('.datepickerclass').datepick({dateFormat: 'yyyy-mm-dd'});});</script>

<input class='Filter datepickerclass' type="text" name="start_date" value=""/>

(Работи през Ajax)

<script type='javascript'> jQuery(function() {jQuery('#start_date').datepick({dateFormat: 'yyyy-mm-dd'});});</script>
<input class='Filter date' type="text" id="start_date" name="start_date" value ="">

Най-доброто ми предположение е, че по някаква причина datepicker не проверява отново страницата (когато използва клас), когато презареждате част от съдържанието и се свързвате с нови елементи, но не съм сигурен как да го накарам да направи това?


person zbestzeus    schedule 18.05.2011    source източник
comment
Fyi, можете също да използвате $ вместо да пишете jQuery всеки път.   -  person ThiefMaster    schedule 19.05.2011
comment
@ThiefMaster, освен ако не използвате друга рамка (например прототип), която също дефинира $   -  person ariel    schedule 19.05.2011
comment
Но тъй като той използва прекия път document.ready, той може да го използва така или иначе: jQuery(function($) { ... }); - обратното извикване получава jQuery, предавано като първи аргумент.   -  person ThiefMaster    schedule 19.05.2011


Отговори (1)


Опитайте малко по този начин. вижте дали проблемът изчезва (ако приемем, че използвате jQ UI):

$(function(){
    $('.datepickerclass').on('click', function() {
        $(this).datepicker({showOn:'focus'}).focus();
    });
});

Или си поиграйте като се възползвате от функцията на живо или делегат. Надявам се това да помогне

person Ali Habibzadeh    schedule 18.05.2011
comment
Хубаво, с някои леки модификации го накарах да работи $('.datepickerclass').live('click', function() { $('.datepickerclass').datepick({dateFormat: 'yyyy-mm-dd'}); $(this).datepick({showOn:'focus'}).focus(); }); - person zbestzeus; 19.05.2011
comment
Радвам се, че помогна. Можете да го отбележите като правилен отговор, ако желаете :) - person Ali Habibzadeh; 19.05.2011
comment
$(document).on('click', '.datepicker', function() { $(this).datepicker({showOn:'focus'}).focus(); }); за jquery 1.10.* - person Harpreet Bhatia; 05.02.2014
comment
Защо трябва да правим това, когато JQUERY документите използват почти ВСИЧКИ примери за клас? - person Mark Löwe; 03.08.2014
comment
Моля, имайте предвид, че ако попаднете тук, това е 2015 г. и методът $.live е отхвърлен. - person Wes Johnson; 13.01.2015
comment
Благодаря, Уес, промених го на включена функция. - person Ali Habibzadeh; 13.01.2015