#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 /