Открыть вторую ссылку на странице с помощью Jquery

#jquery #window

#jquery #окно

Вопрос:

Я пытаюсь открыть ссылку на своей странице на новой странице с помощью Jquery.

 <html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("a:eq(0)").attr("target","_blank");
});
</script>
</head>
<body>
<h1>Welcome to My Homepage</h1>
<p class="intro">My name is Donald</p>
<a href="http://google.com">I live in Duckburg</a>
<p>My best friend is Mickey</p>
Who is your favourite:
<ul id="choose">
<li>Goofy</li>
<li>Mickey</li>
<li>Pluto</li>
</ul>
</body>
</html>
  

(скопированный неправильный код при последнем редактировании — это код, который я использую сейчас. Это выполняется во время загрузки страницы с помощью javascript, который вызывает кучу других вещей во время загрузки.)

У меня есть весь остальной код на месте, и он продолжает работать неправильно.

Но этот код все равно открывает вторую ссылку в том же окне. Кто-нибудь может помочь?

Комментарии:

1. hej в этом примере вы выполняете код перед ссылками. так ли это в реальном приложении?????

2. Вы пробовали обернуть свой скрипт в $(document). готово (функция ( … ваши вещи }); ?

Ответ №1:

Измените eq(2) на eq(1) , потому eq() что начинается с индекса 0 , а также убедитесь, что вы изменили атрибуты после того, как DOM будет готов

 <html>
<script>
$(function(){    $("a:eq(1)").attr("target", "_blank");  });
</script> 
<body>
<a href="http://cnn.com">CNN</a><br />
<a href="http://google.com">Google</a>
</body>
</html>
  

Комментарии:

1. Downvoter, не могли бы вы объяснить свой голос, чтобы я мог улучшить свой ответ?

2. @TimBJames: Ах, это имеет смысл :/

Ответ №2:

Подождите, пока ссылка действительно не появится, прежде чем пытаться ее изменить и начать отсчет с 0 not 1 .

(Непроверенный):

 <html>
<body>
<a href="http://cnn.com">CNN</a><br />
<a href="http://google.com">Google</a>
<script>
$("a:eq(1)").attr("target", "_blank");
</script>
</body>
</html>
  

Комментарии:

1. Я изменил свой код, чтобы включить несколько предложений. Но он по-прежнему не выполняет то, что должен, я все еще что-то упускаю?

Ответ №3:

eq ссылается на массив элементов. Массивы начинаются с индекса 0, поэтому вам нужно будет искать элемент с индексом 1

 $(function(){
    // wait for the DOM to load.
    $("a").eq(1).attr("target", "_blank");
});
  

Посмотрите здесь для справки http://api.jquery.com/eq /

Вот рабочий пример, основанный на вашем коде. http://jsfiddle.net/3wz9a/2 /