Подтвердить что ты не робот

Переопределение поведения меток привязки по умолчанию с помощью jquery

Я пытаюсь переопределить поведение по умолчанию привязанного тега, чтобы я мог загружать веб-страницу на моем сервере в существующий div, а не новую вкладку или окно.

до сих пор я:

myContainer.click(function(){                   
                    event.preventDefault();
                    $('a').click(function(){
                        var link = $(this).attr('href');
                        myContainer.load(link);
                    });
            });

В chrome мне нужно дважды щелкнуть ссылку, прежде чем что-то сделать, в IE FF он вообще не работает и обновляет страницу с помощью новой ссылки.

Любая помощь очень ценится.

4b9b3361

Ответ 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);
     });
     });