Czy istnieje sposób na zmianę określonego atrybutu wszystkich elementów HTML pewnej tagu z JavaScript lub PHP (lub cokolwiek innego)? Na przykład, chciałbym użyć JavaScript, aby zmienić wszystkie elementy "" na stronie, aby mieć atrybut "Target = '_ Blank". Jakieś sugestie?

-1
Proffesor 4 grudzień 2011, 18:11

5 odpowiedzi

Najlepsza odpowiedź

Następujący kod jQuery dodał atrybut docelowy = "_ puste" do wszystkich elementów kotwicy (a) na stronie:

$(function() {
    $('a').attr('target', '_blank');
});

Będziesz musiał zawierać kopię jQuery w elemencie głowicy HTML, przed skryptem powyżej. Więc twój element głowy będzie wyglądał jak:

<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            $('a').attr('target', '_blank');
        });
    </script>
</head>
2
tjbp 4 grudzień 2011, 14:19

getElementsByTagName będzie chwycić wszystkie kotwy, a następnie możesz przede wszystkim:

var list = document.getElementsByTagName("a"), len = list.length;
while( len-- ) {
    list[len].target = "_blank";
}

Jsfiddle: http://jsfiddle.net/zwbcs/

5
Dennis 4 grudzień 2011, 14:24

Przede wszystkim nie wydaje się rozróżniać różnic między językami serwera (np. PHP), a po stronie klienta (jak javascript). Czytaj na różnicę Oto.

Jednak odpowiadając na twoje pytanie. Najlepsza opcja (i najłatwiejsza IMHO), aby uzyskać jQuery i użyj następującego skryptu:

$(document).ready(function() {
  $('a').attr('target', '_blank');
});
1
Pateman 4 grudzień 2011, 14:18

Spójrz na używanie jQuery powinieneś być w stanie zrobić coś takiego

$("a").attr("target", "_blank");
0
Tom B 4 grudzień 2011, 14:17

Oto przykład jQuery, na wypadek, gdyby chcesz otworzyć w nowym oknie tylko linki zewnętrzne:

var myHosts = [ // just in case you are using full abs paths
    'www.mydomain.com'
];

jQuery(function()
{
    jQuery( 'a[href^="http"]' ).each( function()
    {
        if ( jQuery.inArray( this.hostname, myHosts ) == -1 && this.href.indexOf( location.hostname ) == -1 )
            jQuery( this ).attr('target','_blank');
    });
});

Imho zmuszając odwiedzających, aby to zrobić, to dobry pomysł. Nowoczesne przeglądarki mają łatwy w użyciu klawisze skrótów do otwarcia linków w nowym oknie / karcie. Więc jeśli odwiedzający znalazł swoją witrynę tak bardzo przydatne, wróci do ciebie, nawet jeśli opuści witrynę, klikając link zewnętrzny.

Jeśli chcesz zrobić wskazówkę do odwiedzających o zewnętrznych linkach na swojej stronie, sugeruję, abyś umieścił ikonę w linku (na przykład CSS) i modyfikować i użyć skryptu z góry, aby dołączyć żądaną klasę CSS do tych linków do tych linków . Lubić:

jQuery(function()
{
    jQuery( 'a[href^="http"]' ).each( function()
    {
        if ( jQuery.inArray( this.hostname, myHosts ) == -1 && this.href.indexOf( location.hostname ) == -1 )
            jQuery( this ).addClass('external_link ');
    });
});

CSS:

.external_link { padding-right: 20px; background: url(path/to/the/image) no-repeat right top; }
0
Boris Belenski 4 grudzień 2011, 14:50