我一直在試圖找出爲什麼這個jQuery腳本每次實際點擊'.day-available'元素都會調用三次click綁定事件。這是更新日曆旁邊的<div>
的日曆。Drupal jQuery單擊事件被稱爲每次點擊三次
一切工作正常,但我看到在Firebug,每個Ajax網址調用正在執行三次。我找到了有關使用諸如$(this).unbind之類的信息,但我需要能夠讓用戶返回之前點擊過的日曆上的日期。
第一次點擊與後續點擊之間的通話次數不會發生變化。
Drupal.behaviors.uc_deliveries_now = function(context) {
$('.day-available').click(function(){
$('.day-available').removeClass('selected-day');
$(this).addClass('selected-day');
var selected_day = $(this).html();
var m_names = new Array("January", "February", "March","April", "May", "June", "July", "August", "September", "October", "November", "December");
var d = new Date();
var current_day = d.getDate();
var current_month = d.getMonth();
var current_year = d.getFullYear();
if (selected_day < current_day) {
// Move to next month
current_month += 1;
}
$month_string = m_names[current_month];
$.ajax({
url: Drupal.settings.basePath + 'delivery_windows/' + $month_string.toLowerCase() + '/' + selected_day,
success: function(data) {
$('#time-selection').html(data);
}
});
});
};
這是在JavaScript文件中的唯一的事情,沒有其他綁定或其他任何可能與此衝突。整個JavaScript文件被粘貼在上面。我無法弄清楚爲什麼會發生這種情況。
這裏是從日曆HTML行示例:
<tr>
<td>24</td>
<td class="day-available">25</td>
<td>26</td>
<td class="day-available selected-day">27</td>
<td>28</td>
<td class="day-available">29</td>
<td>30</td>
</tr>
任何幫助將不勝感激。
+1這個完全爲我工作,但我想理解爲什麼。這是一個Drupal相關的問題或jQuery? – FLY 2012-11-09 09:01:38