Выполнение чего-либо вроде $( 'a' )
будет проходить по циклу через КАЖДЫЙ A
элемент - вы можете беспокоиться об этом только при реальном клике. Кроме того, вы можете просто использовать относительные URL-адреса, являющиеся вашим сайтом, а абсолютные URL-адреса - чужими.
$( document ).on( 'click', 'a', function( event ){
var $a = $( this );
// test for anything like `http://` or '//whatever' or 'ftp://'
if ( /^\w+?\:?\/\//.test( $a.attr( 'href' ) ) ){
// since this runs before the event is propagated,
// adding it now will still work
$a.prop( 'target', '_blank' );
}
});
Демо: http://jsfiddle.net/danheberden/3bnk9/
Или вы можете использовать window.open:
$( document ).on( 'click', 'a', function( event ){
var href = $( this ).attr( 'href' );
// test for anything like `http://` or '//whatever' or 'ftp://'
if ( /^\w+?\:?\/\//.test( href ) ){
// dont follow the link here
event.preventDefault();
// open the page
window.open( href, '_blank' );
}
});
Демо: http://jsfiddle.net/danheberden/NcKdh/