jquery
  • ajax
  • load
  • external-links
  • 2013-10-10 5 views 0 likes 
    0

    Я использую этот скрипт, чтобы заставить ссылки Открыть в новом окне с Jquery, и она отлично работаетПринуждение ссылки нагруженные Ajax, чтобы открыть в новой вкладке

    // 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(); 
    }); 
    }; 
    

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

    ответ

    1

    addExternalLinks - это просто функция, а не метод String (который возвращает .html), и это не метод jQuery, который должен быть прикован.

    $("#layerinfo").load(infoContent, function() { 
        addExternalLinks(); 
    }); 
    

    Кстати, для addExternalLinks не могли бы вы просто добавить .attr("target", "_blank") к указанной ссылки вместо того, чтобы использовать событие щелчка?

    +0

    Работает локально, но при загрузке на сервер внешние ссылки не работают с загруженным контентом. Есть идеи ? Я адаптировал функцию в соответствии с вашим предложением: - – naturelab

    +0

    // добавить внешние ссылки function addExternalLinks() { $ ("a [href * = 'http: //']: not ([href * = '" + location .hostname.replace ("www.", "") + "']), a.linkException"). each (function() { if ($ (this) .find (' img ') .length == 0) { $ (this) .attr ("target", "_blank"). AddClass ('externalLink'). Attr ("title", $ (this) .attr ("title") + "- (Эта ссылка откроется в новом окне) "); } }); } – naturelab

    1

    пытаются добавить Аттрибут вместо:

    $(this).attr("target", "_blank"); 
    

    надежду, что эта помощь!

    Смежные вопросы