Принудительное открытие ссылок, загруженных с помощью Ajax, в новой вкладке
Я использую этот скрипт, чтобы заставить ссылки открываться в новом окне с помощью Jquery, и он отлично работает
// add external links
function addExternalLinks () {
$("a[href*='http://']:not([href*='"+location.hostname.replace
("www.","")+"']), a.linkException").each(function() {
if($(this).find('img ').length == 0) {
$(this).click(function(event) {
event.preventDefault();
event.stopPropagation();
window.open(this.href, '_blank');
}).addClass('externalLink').attr("title", $(this).attr("title")+" - ( This link will open in a new window )");
}
});
}
ОДНАКО, часть страницы использует контент, загруженный с внешней HTML-страницы, используя LOAD.
function showInfo( info ) {
$("#layerinfo").load("descriptions.html #" + info );
};
Я хочу, чтобы ссылки, содержащиеся в этом загруженном контенте, также были принудительно открыты в новой вдове с тем же сценарием. Я не могу заставить его работать должным образом.
Что-то вроде:-
function showInfo( info ) {
var infoContent = "descriptions.html #" + info;
$("#layerinfo").load(infoContent,function(){
$("#layerinfo").html().addExternalLinks();
});
};
Любая помощь с благодарностью.
2 ответа
addExternalLinks
это просто функция, а не метод String (что .html
возвращается), и при этом это не метод jQuery, который будет связан.
$("#layerinfo").load(infoContent, function () {
addExternalLinks();
});
Кстати, для addExternalLinks
не могли бы вы просто добавить .attr("target", "_blank")
на указанные ссылки вместо использования события клика?
try to add attr instead:
$(this).attr("target", "_blank");
надеюсь, это поможет!