2016-08-30 61 views
1

在我的html文檔中,我使用<div id="basic" data-toggle="calendar"></div>.js文件中導入日曆的外部內容。jquery在更改div內容後沒有響應 - 委託事件處理程序

我想檢查<td>字段通過添加類與jQuery。在準備好的表格中,我可以這樣做...

$(window).load(function() { 
    $("td.available.cur-month").on("click", function() { 
    $(".current").removeClass("current"); 
    $(this).addClass("current"); 
    }); 
    $("td.unavailable.cur-month, td.available.near-month").off(); 
}); 

...它很好。 但是,當我更改月份(通過單擊<i class="next"></i><i class="prev"></i>)jQuery方法正在停止

我沒有放棄,我加入到JavaScript文件...

function($) { 
    var plugin_name = 'calendar', 
    data_key = 'plugin_' + plugin_name, 
    defaults = { 
    modifier: 'datetimepicker', // wrapper class 
    day_first: 1, 
    day_name: ['Nd', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So'], 
    month_name: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'], 
    unavailable: ['*-1-1'], 
    paging: ['<i class="prev"></i>', '<i class="next"></i>'], 
    adapter: '', 
    month: null, // month of calendar = month in js + 1, month in js = 0-11 
    year: null, // year of calendar 
    num_next_month: 0, // number of next month to show 
    num_prev_month: 0, // number of prev month to show 
    num_of_week: 'auto', // number of week need to show on calendar number/auto 
    onSelectDate: function(date, month, year) {}, // trigger on select 
    }; 

...相同的代碼行像上面我得到這個(代碼最後幾行):

onSelectDate: function(date, month, year) { 
    $("td.available.cur-month").on("click", function() { 
    $(".current").removeClass("current"); 
    $(this).addClass("current"); 
    }); 
    $("td.unavailable.cur-month, td.available.near-month").off(); 

現在jQuery正在工作,但在第二次點擊後。看起來jQuery在月份更改後不起作用,並在點擊某個<td>時開始。

我必須做些什麼才能擁有良好的工作腳本?

我已經使用這個https://www.phpjabbers.com/free-availability-calendar-script/)和有人問這個項目在這裏JQUERY JSON returned undefined但它是不同的情況。

+0

您需要使用委派的事件處理程序,因爲日曆正在重新創建月份更改上的元素 –

+0

謝謝,我不知道如何在我的情況下使用此委託事件處理程序。 – Peniakoff

回答

1

您僅在現有DOM元素上綁定事件。 您應該使用此代碼。這樣,你的身體上點擊綁定,然後cheking如果點擊的元素是td.available.cur月

$(window).load(function() { 
    $("body").on("click", "td.available.cur-month", function() { 
    $(".current").removeClass("current"); 
    $(this).addClass("current"); 
    }); 
    $("td.unavailable.cur-month, td.available.near-month").off(); 
}) 

;

+0

我忘了「身體」。謝謝,它現在很好。 – Peniakoff

相關問題