2009-12-19 55 views
19

Tôi đã thử nhiều biến thể để đặt target="_blank" trong các liên kết với jQuery, nhưng tôi không thể làm cho nó hoạt động.Làm thế nào để đặt target = "_ blank" trong jQuery?

Dưới đây là mã của tôi:

var thumbfile = "<?php echo $smit_iturl_v; ?>"; 
jQuery(document).ready(function() { 
    var actualHost = jQuery.trim(jQuery.url.attr("host")); 
    jQuery("a img").each(function (i) { 

     if (jQuery.trim(jQuery.url.setUrl(jQuery(this).attr("src")).attr("host")) == actualHost &&  
      (jQuery.url.setUrl(jQuery(this).attr("src")).attr("path")).indexOf("wp-content") != -1 && 

      isImage(jQuery.url.setUrl(jQuery(this).attr("src")).attr("file"))) { 

      var parentTag = jQuery(this).parent().get(0).tagName; 
      parentTag = parentTag.toLowerCase(); 

      if (parentTag == "a" && 
      jQuery.url.setUrl(jQuery(this).parent().attr("href")).attr("host") == actualHost && 
      jQuery.url.setUrl(jQuery(this).parent().attr("href")).attr("path").indexOf("wp-content") != -1 && 
      isImage(jQuery(this).parent().attr("href"))) { 

       var description = (jQuery(this).attr("alt") == "") ? jQuery(this).attr("title") : jQuery(this).attr("alt"); 
       jQuery(this).parent().attr("href", thumbfile + 
         "?title=" + jQuery(this).attr("title") + 
         "&description=" + description + 
         "&url=" + stripDomain(jQuery(this).parent().attr("href")) 

       ); 
      } 
     } 
    }); 

Làm thế nào tôi có thể làm điều đó?

Trả lời

16

Vì bạn đang lặp lại trên các yếu tố hình ảnh mà là Childs của một neo, vào lúc bắt đầu của vòng lặp bạn có thể đặt nó:

//... 
jQuery("a img").each(function (i) { 
    // 'this' is the img element, you should get the parent anchor 
    jQuery(this).parent().attr('target', '_blank'); 
    //... 
}); 
72

Quá nhiều thông tin! Điều này sẽ hoạt động tốt:

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

Xem ví dụ tại đây http://jsbin.com/evexi/edit. Nó hoạt động hoàn hảo.

+9

Nếu bạn chỉ muốn mở các liên kết bên ngoài trong một cửa sổ mới thì regex này có thể hữu ích. '$ (" a [href^= 'http'] "). attr ('target', '_ blank');' –

+0

cảm ơn bạn đời, đã giúp tôi quá – DextrousDave

+0

Điên hữu ích, cảm ơn! –

10

Để thêm vào sự đơn giản tuyệt vời của câu trả lời này, đó là siêu hữu ích bằng cách này, bạn có thể nhắm mục tiêu nhiều kiểu liên kết ví dụ:

$("#whatever_id a, #another_id, #yet_another, #etc").attr("target","_blank"); 

Chỉ cần giữ id của khác nhau bằng dấu phẩy.

7

Bạn có thể cung cấp tất cả các liên kết bạn muốn mở trong cửa sổ mới một lớp, ví dụ: 'nhắm mục tiêu trống';

<a href='#' class='any existing classes target-blank'>Opens in a new window</a> 

sau đó thêm một giọt jQuery

$("a.target-blank").attr('target','_blank'); 

xhtml hợp lệ và một DOM mà hiểu target = '_ blank'!

Các vấn đề liên quan