Jquery live click вызывает двойное открытие окна, не может вернуть false, запретить использование по умолчанию или просто получить ссылку на простой останов! - PullRequest
1 голос
/ 20 апреля 2011

Так что для моей жизни я не могу понять, почему это не работает. У меня есть живой клик, когда кто-то нажимает на ссылку. Любая внешняя ссылка на сайт должна открываться в новой вкладке. Теоретически это будет работать с некоторыми представлениями drupal, которые обновляют контент через ajax.

Ниже приведен код, который я выкопал и изучил вместе. Работает только захват ссылок, связывающих внешние. Он также работает для них при нажатии, так как срабатывает оповещение (его удаление ничего не меняет). StopImmediatePropogation () ничего не делает, protectDefault ничего не делает, а return false ничего не делает. Ссылка еще ИДЕТ!

Я просто хочу получить ссылку! Я могу справиться с тем, чтобы он открывался в новом окне нормально, так как работает window.open (this.href), просто в связке с этим ребенком он открывается в текущем окне И в новом окне!

$("a[href^='http:']:not([href*='" + window.location.host + "'][target='_blank'])").live('click', function(e){
    alert('this is it!');
    e.stopImmediatePropagation();
    e.preventDefault(); 
    return false;
    //window.open(this.href);
});  

Помощь очень ценится!

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

У меня была та же проблема с моими кнопками, которые я установил для жизни.Я закончил тем, что использовал глобальную переменную ... по сути, логический флаг, который я проверял бы в каждой функции, а затем сбрасывал в конце функции .... (т.е. ... глобальный установлен в false .... проверка на! variable .... установить в true ..... делать мои вещи .... и затем снова установить в false перед выходом из функции) .... похоже, работает до сих пор ....

1 голос
/ 20 апреля 2011

Попробуйте это:

$("a[href^='http:']:not([href*='" + window.location.host + "'][target='_blank'])").live('click', function(e){
    e.preventDefault();
    window.open(this.href, "_blank");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...