Переопределение поведения меток привязки по умолчанию с помощью jquery
Я пытаюсь переопределить поведение по умолчанию привязанного тега, чтобы я мог загружать веб-страницу на моем сервере в существующий div, а не новую вкладку или окно.
до сих пор я:
myContainer.click(function(){
event.preventDefault();
$('a').click(function(){
var link = $(this).attr('href');
myContainer.load(link);
});
});
В chrome мне нужно дважды щелкнуть ссылку, прежде чем что-то сделать, в IE FF он вообще не работает и обновляет страницу с помощью новой ссылки.
Любая помощь очень ценится.
Ответы
Ответ 1
Не должно быть просто:
$('a').click(function(e) {
e.preventDefault();
myContainer.load(this.href);
});
Ваш код назначает обработчик кликов внутри обработчика кликов. Поэтому первый клик присоединяет обработчик кликов к ссылке, а второй щелчок (по ссылке) будет выполнять новый обработчик кликов.
Кажется, вам нужен только обработчик кликов один. Если ссылки добавляются динамически, вы можете использовать .on()
(преемник .live
и .delegate
):
myContainer.on('click', 'a', function(e) {
e.preventDefault();
myContainer.load(this.href);
});
// or
$(document).on('click', 'a', function(e) {
e.preventDefault();
myContainer.load(this.href);
});
Ответ 2
вы забыли передать событие:
myContainer.click(function(event){
event.preventDefault();
$('a').click(function(){ var link = $(this).attr('href');
myContainer.load(link);
});
});
попытайтесь изменить их:
myContainer.ready(function(){
$('a').click(function(event){
event.preventDefault();
var link = $(this).attr('href');
myContainer.load(link);
});
});