Я пытался выяснить, почему этот скрипт jQuery вызывает событие привязки кликов три раза для каждого фактического клика по элементу .day-available.Это календарь, который обновляет <div>
рядом с календарем.
Все работает нормально, но я вижу в Firebug, что каждый вызов URL 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>
Любая помощь будет принята с благодарностью.