Отключить событие после его загрузки; ожидание отключения события до тех пор, пока пользователь не нажмет на него, может оказаться не лучшим решением. JQuery предоставляет функцию .load(); просто выберите элемент, который будет содержать ваш загруженный ajax контент, и позвоните по телефону
$('#my_loading_element').load(function() {$(".Tab_heading:first-child").off('click')});
на нем. Это приведет к удалению события щелчка после загрузки элемента. Или, если элемент всегда загружается через AJAX, вы можете поместить это:
$(".Tab_heading:first-child").off('click');
в функции успеха, чтобы расцепить событие.
Мне кажется, что если данные начнут загружаться даже до того, как пользователь нажмет на что-то, вы, вероятно, не должны вообще делать вызов ajax и просто размещать контент там со стороны сервера; если, однако, у вас должен быть вызов ajax, и он должен запускаться при нажатии, вы также можете использовать третий вариант, когда вы отключите событие при первом щелчке, чтобы все последующие клики ничего не делали (например, когда пользователь щелкает и запускает ajax один раз, затем снова нажимает до того, как закончит, затем снова и снова ... глючный код будет помещать контент в несколько раз). Ваш код будет выглядеть примерно так:
$(".Tab_heading:first-child").live('click',function(){
$(this).off('click');
$.ajax({
...
});
});
Это, вероятно, лучший вариант в вашем случае; активируйте вызов вызова ajax один раз щелчком, но никогда больше.
EDIT
$(".Tab_heading:first-child").live('click',function(){
$(this).off('click');
$.ajax({
...
success: function() {
$(".Tab_heading:first-child").on('click', function() {
//open the tab here
}).click();
} //no trailing comma for IE compatibility
});
});
Это последний вызов .click() для удобства, так что пользователю не нужно нажать на вкладку дважды, чтобы открыть его.
Последнее: если вы используете jquery не 1.7 или больше, вам следует обновить его по многим причинам. Новые версии проще в использовании, более интуитивно понятны, более эффективны, менее неуклюжи и могут иметь функции безопасности, которые необходимы для серьезных веб-разработчиков. Даже если для преобразования сайта требуется много времени, это стоит усилий.
Если вы не используете старую (до 1.7) версию jQuery, вы должны использовать ['.on()'] (http://api.jquery.com/on/) вместо устаревшего [ '.live()'] (http://api.jquery.com/live/). – ajp15243
нет проблем с .live() function – Sweetz
Это удобное предложение использовать самый современный API, потому что '.live()' удаляется из jQuery в пользу '.on()'. – ajp15243