Почему не срабатывает JS в JQUERY событии

B
На сайте с 14.04.2012
Offline
35
635

Добрый день. Есть код JQUERY

$(document).ready(function() {



$('a').click(function() {


var message = "<p>Вы нажали на ссылку</p>";
$('.main').append(message);

});

}); // конец функции ready

То есть при нажатии на любую ссылку появляется сообщение. Так вот, мне надо чтобы по нажатию на эту ссылку в массив добавлялось что-нибудь


var ac = [];
ac.unshift('add');

Как связать эти 2 кода?

$(document).ready(function() {



$('a').click(function() {


if ($(this)){
ac.unshift('add');}
var message = "<p>Вы нажали на ссылку</p>";
$('.main').append(message);

});

}); // конец функции ready

Не получается. Помогите

IL
На сайте с 20.04.2007
Offline
435
#1

Откуда появился

bimbo:
if ($(this)){

И где во втором коде

bimbo:
var ac = [];

?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
B
На сайте с 14.04.2012
Offline
35
#2

Да это типа шаманю. Перелистал литературу, но что-то нигде не пишут как соединить JQUERY И JS простой.

В итоге мне надо сделать, чтобы обработчик JQUERY при нажатии на любую ссылку добавлял в массив ac слово add.

Подскажите как это сделать?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

а где у вас вообще массив объявлен? Вот это например, делает то что Вы хотите:


var ac = [];

$(document).ready(function() {
$('a').click(function() {
ac.unshift('add');
return false;
});
});

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
B
На сайте с 14.04.2012
Offline
35
#4

var ac = [];

$(document).ready(function() {
$('a').click(function() {
ac.unshift('add');
return false;
});
});

Спасибо, вот он добавляет в массив слово add.

Теперь я пытаюсь прогнать массив через цикл

<script>

for(var i=0; i<ac.length; i++){
document.write('<a href="#'++'">'+ac+'</a><br>');
}
</script>

и вот тут не робит. Данный вызов куда вставлять? На данный момент в теле сраницы, а сама JQUERY команда в head. Что не так:)

Оптимизайка
На сайте с 11.03.2012
Offline
396
#5

и что Вы ожидаете от работы Вашего кода? Как Вы проверяете, что в массив colors элемент добавлен?

B
На сайте с 14.04.2012
Offline
35
#6

Начинаю проgонять циклом for

Так. разобрался

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>TITLE</title>

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
var ac = [];

$(document).ready(function() {
$('a').click(function() {
ac.unshift('add');
for(var i=0; i<ac.length; i++){
document.write(ac+'<br>');
}

return false;

});

});
</script>


</head>
<body>


<div class="main">
<p><a href="#">Ссылка</a></p>
</div>
</body>
</html>

Но почему,как только я жму на ссылку открывает массив новом окне, а не в этом же выводит без перезагрузки?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#7

Дело в том, что вызов document.write в закрытом потоке документа (когда он уже сформирован) автоматически вызывает document.open().

Используйте jquery html() или append(), а не document.write

Sveta Prokopeva
На сайте с 10.05.2006
Offline
99
#8

bimbo, кроме того у вас код пишет содержимое внутри тега <head> - это ошибка.

Создайте переменную var html = "";, накапливайте в неё содержимое html += "Три-два-раз<br/>";, вставляйте содержимое куда нужно через $("#container").html(html);

Оптимизайка
На сайте с 11.03.2012
Offline
396
#9
Sveta Prokopeva:
кроме того у вас код пишет содержимое внутри тега <head> - это ошибка.

В скрипте, размещенном в head, только навешивается обработчик. document.write вызывается уже после того, как DOM сформирован, это не "код пишет внутри head".

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий