[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с выполнением кода
sharki
Всем привет, щас опишу проблемку, может кто сталкивался с такой

на странице есть некий код

<script type="text/javascript">
$(document).ready(function() {
$("ul li").click(function(even) {
........

$.ajax({
type: "POST",
url: "ajax.php",
data: ({....}),
success: function(msg){
$(".price_block").html(msg);
}
}
);
});

$(".pug").click(function() {
alert();
});
});
</
script>


при выполнении $("ul li").click(function(even) кода все нормально, все подгружается и т.п через AJAX, потом в новом подгруженном тексте есть ссылка с классом pug, при нажатии на ссылку должен обработать вот этот блок
$(".pug").click(function() {
alert();
});


Но он не срабатывает, почему так?)

Все именования правильные, сто раз перепроверил.





Спустя 4 минуты, 40 секунд (9.05.2011 - 17:34) alex12060 написал(а):
А он случаем не дублируется несколько раз?

Спустя 51 секунда (9.05.2011 - 17:35) sharki написал(а):
Игорь_Vasinsky
Не понял
$(".pug").click(function() {
alert();
});

Находится внутри блока $(document).ready(function() {

Спустя 1 минута, 34 секунды (9.05.2011 - 17:37) sharki написал(а):
alex12060
Что именно дублируется? новый подгружаемый контент не имеет какого либо кода, только табличка и всё.

Спустя 2 минуты, 22 секунды (9.05.2011 - 17:39) alex12060 написал(а):
sharki

А откуда известно? Может так это выглядит:


<div id="layer" class="pug">
<div
class="pug">
...
</div>
</div>



От этого и будет ругаться. А так, протести в мазилке, открой консоль ошибок, там все должно быть написано если беда.

Спустя 1 минута, 11 секунд (9.05.2011 - 17:40) sharki написал(а):
alex12060
Какая разница, будет ругаться если был бы не class а id

щас гляну что-там

Спустя 1 минута, 53 секунды (9.05.2011 - 17:42) alex12060 написал(а):
sharki

Ты меня не понял. Я специально сделал вложенность с одним и тем-же классом, чтобы показать, что браузер прсото может не понять, на какой ему реагировать и просто выдаст ошибку. Но это маловероятно.

Спустя 1 минута, 25 секунд (9.05.2011 - 17:44) sharki написал(а):
alex12060
В любом случае повторений нету вот есть только одна ссылка
<a class="pug" href="#cat_id=20&num=2">2</a>


Ошибок нету

Спустя 2 минуты, 37 секунд (9.05.2011 - 17:46) Игорь_Vasinsky написал(а):
sharki
там я обознался...

у меня вообще строка $(document).ready(function() { - вызывает ошибку - предпологаетс наличие объекта blink.gif я сначала думал - мож опечатка - нет. вынес в отдельный файл - такая же фигня blink.gif

Спустя 1 минута, 43 секунды (9.05.2011 - 17:48) sharki написал(а):
Игорь_Vasinsky
Это же jquery.

Полная конструкция
$(document).ready(function() {...});

Спустя 2 минуты, 26 секунд (9.05.2011 - 17:50) Игорь_Vasinsky написал(а):
в первую очередь это JS, я в отдельный js подключаю и ошибка

Спустя 7 секунд (9.05.2011 - 17:50) sharki написал(а):
Щас попробовал вынести отдельный кусочек внутрь того подгружаемого контента, и он стал выполняться О_О

<script type="text/javascript">
$(document).ready(function() {
$(".pug").click(function() {
alert();
});
});
</
script>


В итоге получилось что подгружаемый контент имеет JS код

Спустя 47 секунд (9.05.2011 - 17:51) sharki написал(а):
Игорь_Vasinsky
Ты чего то путаешь

Спустя 4 минуты, 27 секунд (9.05.2011 - 17:56) Игорь_Vasinsky написал(а):
sharki
http://ru.wikipedia.org/wiki/Jquery

я не путаю. этот фрейморк был придуман чтобы упростить работу с кодом JS и разработчики с со своей задачей справились

Спустя 5 минут, 24 секунды (9.05.2011 - 18:01) sharki написал(а):
Игорь_Vasinsky
:blink: всё это я знаю, я тебя не могу понять. Откуда у тебя та ошибка то?)))

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 

<script
type="text/javascript">
$(document).ready(function() {
alert("опачки");
});
</script>


Запусти порпобуй

Спустя 40 секунд (9.05.2011 - 18:02) sharki написал(а):
я так понял никто не знает почему не работает код? =)

Спустя 1 минута, 6 секунд (9.05.2011 - 18:03) Игорь_Vasinsky написал(а):
biggrin.gif biggrin.gif biggrin.gif biggrin.gif biggrin.gif
jquery не подключил

Спустя 4 минуты, 6 секунд (9.05.2011 - 18:07) Игорь_Vasinsky написал(а):
всё отлично работает wink.gif и в коде и если выносить wink.gif

Спустя 1 минута, 32 секунды (9.05.2011 - 18:08) Игорь_Vasinsky написал(а):
ну я ока многоточия твои снёс.

Спустя 2 минуты, 22 секунды (9.05.2011 - 18:11) sharki написал(а):
Игорь_Vasinsky
Я же написал когда не работает =)

Еще раз по пунктикам
1) при первом щелчке по списку аяксом подгружается табличка в див блок, там есть ссылка с классом pug
2) в основном скрипте есть обработчик события щелчка по элементу с классом pug

Вот если щелкнуть по данной ссылке основной скрипт не исполнится!

Спустя 3 минуты, 27 секунд (9.05.2011 - 18:14) Игорь_Vasinsky написал(а):
ну тыб выложил бы полный код, а то мне додумовать вообще лень, просто может нужно убедится что фрма загрузилась, а потом уже клик привязовать, такое бывает, в частности на примере с кнопой submit - на ajax - т.е. кнопа уже видна, но document еще не Готов и обработчик не хватался - есть такое.

Спустя 2 минуты, 54 секунды (9.05.2011 - 18:17) sharki написал(а):
Игорь_Vasinsky
Вот написал примерчик, симптом тот же

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 
<script
type="text/javascript">
$(document).ready(function() {
$(".pug2").click(function() {
$.ajax({
type: "POST",
url: "ajax.php",
data: ({mod:"read"}),
success: function(msg){
$(".price_block").html(msg);
}
}
);
});

$(".pug").click(function() {
alert();
});
});
</script>
<a
class="pug2" href="#">КликF</a>
<div
class="price_block">

</div>



ajax.php

<?php
echo '<a class="pug" href="#">JGFFFFFFFF</a>';
?>

Спустя 22 минуты, 43 секунды (9.05.2011 - 18:40) Игорь_Vasinsky написал(а):
при клике на pug2 в див прилетает pug - Но при просмотре в html - его там нет

Спустя 2 минуты, 54 секунды (9.05.2011 - 18:43) Игорь_Vasinsky написал(а):
может тебе к диву привязать клик, или попробовать не явно класс указать а как дочерний элемент дива.

в первом варианте работает, во втором не проверял

Спустя 2 минуты, 49 секунд (9.05.2011 - 18:46) sharki написал(а):
Игорь_Vasinsky
Понятно тогда =) он же действительно не может найти в DOM документе тот самый элемент с классом pug, из-за этого мозгу имеет)))

так что любой контент который загружен через AJAX, не может быть отображен в DOM документе.

Спустя 6 минут, 17 секунд (9.05.2011 - 18:52) Игорь_Vasinsky написал(а):
да, но ты его в полне уместно разместил в диве, поэтому управлять (мнимо) можно родительским контейнером wink.gif

Спустя 22 минуты, 3 секунды (9.05.2011 - 19:14) Invis1ble написал(а):
sharki
Попробуй непосредственно на ссылку навесить onclick. Если я правильно понял твою проблему - то должно помочь, у меня самого недавно подобная проблема была.

Спустя 3 минуты, 11 секунд (9.05.2011 - 19:17) Игорь_Vasinsky написал(а):
Invis1ble
Да Ajax её в DOM то не вставляет при приёме. запусти код, посмотри исходный, после исолнения - визуально она есть, а фактически её там нет wink.gif

Спустя 2 минуты, 16 секунд (9.05.2011 - 19:19) sharki написал(а):
Invis1ble
Я пробовал, не получается

Спустя 11 минут, 33 секунды (9.05.2011 - 19:31) Invis1ble написал(а):
sharki
А я сделал - все работает, проверь сам:

index.php
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script
type="text/javascript">
function
func() {
alert('OK');
}

$(document).ready(function() {
$(".pug2").click(function() {
$.ajax({
type: "POST",
url: "ajax.php",
data: ({mod:"read"}),
success: function(msg){
$(".price_block").html(msg);
}
}
);
});
});
</script>
<a
class="pug2" href="#">КликF</a>
<div
class="price_block">

</div>


ajax.php
<?php
echo '<a class="pug" href="#" onclick="javascript: func()">JGFFFFFFFF</a>';

Спустя 8 минут, 13 секунд (9.05.2011 - 19:39) sharki написал(а):
Invis1ble
хм, так делал, получалось, меня не устроило то, что я не могу вызвать эту функцию внутри $(document).ready(function() { где я могу пользоваться jquery

Спустя 3 минуты, 46 секунд (9.05.2011 - 19:43) Invis1ble написал(а):
sharki
А кто тебе мешает там юзать jQuery ?
function func() {
alert($(this));
}

Спустя 5 минут, 59 секунд (9.05.2011 - 19:49) sharki написал(а):
точняк biggrin.gif
Спасибо)

Спустя 2 часа, 50 минут, 53 секунды (9.05.2011 - 22:40) Lex_R написал(а):
sharki
Ошибка в том, что собитие $(".pug").click(function() ... вешается на элемент с классом pug, который уже есть в документе, а у тебя он загружается аяксом, поэтому собитие и не срабатывает. Чтобы событие вешалось и на новые элементы, которые загружаются аяксом, нужно использовать метод live() - $(".pug").live("click", function(){...})

Спустя 9 минут, 22 секунды (9.05.2011 - 22:49) sharki написал(а):
Lex_R
хм, щас гляну что это за зверь такой, спасибо за инфу))

Спустя 55 минут, 13 секунд (9.05.2011 - 23:44) Invis1ble написал(а):
Интересно, нужно будет потом тоже попробовать.
sharki, отпишись, работает ли.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.