Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Замена слов по нажатию на ссылку
ТвойWeb » WebMaster класс » JavaScript » Замена слов по нажатию на ссылку

Страниц (2): [1] 2 »
 

1. UFO - 25 Августа, 2010 - 16:05:27 - перейти к сообщению
Привет всем!

Необходимо без обновления страницы заменить на ней много текста в разных частях, для этого я стал использовать такой вот код
CODE:
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
<!--
$(function() {
$('a').click(function() {
$('div.elementToReplace').replaceWith('<div>Я заменяю блок</div>');
return false;
});
});
//-->
</script>
<body>
<a href="#">link</a><div class="elementToReplace">блок</div>
</body>

Все заменяется, но есть проблема, при замене вдруг перестают работать все ссылки на странице, указатель мыши мутирует в руку, но при клике никаких изменений.
jQuery использую именно 1.3.2.
В чем может быть проблема?
2. Ray Wen - 25 Августа, 2010 - 16:53:09 - перейти к сообщению
JQuery работает с DOM... нафига заменять блок? Замени только текст командой .text или .html... Это первый момент, второй, если скрипты выше загружаемой области, нужно вставлять их в
CODE:
jQuery(document).ready(function(){ ... });
, иначе при работе скрипта элементы DOM могут быть ещё не загружены и не готовы...

Желательно использовать JQ 1.4.2...
3. UFO - 25 Августа, 2010 - 17:01:07 - перейти к сообщению
Ray Wen пишет:
JQuery работает с DOM... нафига заменять блок? Замени только текст командой .text или .html... Это первый момент, второй, если скрипты выше загружаемой области, нужно вставлять их в
CODE:
jQuery(document).ready(function(){ ... });
, иначе при работе скрипта элементы DOM могут быть ещё не загружены и не готовы...

Желательно использовать JQ 1.4.2...

А как выглядят эти команды полностью? Я очень плохо разбираюсь в JS Недовольство, огорчение
И что такое загружаемая область?
jquery обновил - не помогло.
4. Ray Wen - 26 Августа, 2010 - 01:42:50 - перейти к сообщению
http://jquery-docs.ru/ - раз уж взялся изучать... С JQ не обязательно хорошо знать JS, я сам его толком не знаю...

CODE:
$(document).ready(function(){
$('a').click(function() {
$('div.elementToReplace').text('Я заменяю блок');
return false;
});
});
5. UFO - 26 Августа, 2010 - 04:10:08 - перейти к сообщению
Я разобрался в чем дело, ведь у меня в коде
CODE:
$('a').click(function() {

таким образом все ссылки в теге <a> попадают под действие JS, поэтому ссылки и перестали работать, сделал вот так:

CODE:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){
$('span.link').click(function() {
$('div.block1').replaceWith('<div>заменяю блок</div>');
return false;
});
});
//-->
</script>
<a href="#"><span class="link">щелкнуть</span></a><br>
<div class="block1">блок</div>

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

Спасибо, Ray Wen, за помощь и ссылку! Подмигивание Я и вправду понял, что с JQ можно делать многое всего парой строчек кода.
6. Ray Wen - 26 Августа, 2010 - 04:35:38 - перейти к сообщению
В твоём варианте два минуса: Клик по span не такая уж правильная идея, тогда уж без ссылки, но вообще какой тогда смысл, если можно класс на ссылку задать? При замене блока ты так же убираешь идентификатор, повторно его найти уже нельзя будет...
7. UFO - 26 Августа, 2010 - 07:07:25 - перейти к сообщению
Ray Wen пишет:
В твоём варианте два минуса: Клик по span не такая уж правильная идея, тогда уж без ссылки, но вообще какой тогда смысл, если можно класс на ссылку задать? При замене блока ты так же убираешь идентификатор, повторно его найти уже нельзя будет...

Но мне не нужно чтобы все ссылки производили замену слов на странице, только одна определенная, но надо чтобы было видно, что это кликабельная ссылка.
Да, индентификаторы убираются, поэтому нельзя все заменить обратно, но вообщем-то и не надо - нашел выход, просто обновляю страницу и все снова, как было.
8. Ray Wen - 26 Августа, 2010 - 08:22:40 - перейти к сообщению
Проще всего делать всё изначально правильно... Улыбка В данном случае логичнее пользоваться функциями .html и .text, а на ссылку поставить класс, по которому ты находишь span, иначе бы все span кликались и делали эти действия...

Но в общем-то дело твоё, это просто совет... Улыбка
9. UFO - 26 Августа, 2010 - 10:20:09 - перейти к сообщению
span то тоже с классом, почему все кликнутся? Улыбка
10. Ray Wen - 26 Августа, 2010 - 12:09:31 - перейти к сообщению
Ну я конечно не знаю, может у меня это уже профессиональная деформация, но нужно чтобы всё было как можно проще... В данном случае у тебя кликались ссылки, но вместо того, чтобы дать класс или даже ID ссылке, ты зачем-то сунул в неё span и задал класс ему... Где логика? Просто это само по себе не правильно, вставлять span для события, а ссылку для внешнего вида... обычно оно должно быть на оборот как-то...

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0388]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33