ни-чего не-по-ни-ма-ю :(((
почему не работает конструкция:
<script type='text/javascript' src='/js/jquery/jquery-1.6.1.min.js'></script> <script type="text/javascript"> function ChangeList(id) { $(id).hide(); $('seen_2').show(); } </script> <img id="seen_1" onclick="ChangeList(this)" src="/images/seen1.png"> <img id="seen_2" style="display:none" src="/images/seen2"> точнее, скрывается, но ничего не показывается |
Цитата:
$('.seen_2').show(); |
я тупец!!! забыл # :(((
|
А кстати, объясните, плиз, почему в данном примере нельзя сделать так
<script type="text/javascript"> function ChangeList() { $(this).hide(); } </script> <img id="seen_1" src="/images/new_icons/seen_yes.png" onclick="ChangeList()" /> не работает. как вообще правильно будет сделать? |
зверек,
<script type="text/javascript"> function ChangeList(elem) { $(elem).hide(); } </script> <img id="seen_1" src="/images/new_icons/seen_yes.png" onclick="ChangeList(this)" /> |
9xakep,
спасибо! |
Цитата:
$('#seen_1').on('click', changeList); Кстати this можно так передать: <img id="seen_1" src="/images/new_icons/seen_yes.png" onclick="ChangeList.call(this)" /> |
Цитата:
|
Цитата:
|
Вообще-то id и используется либо для якорной навигации либо для привязки к JS. Для css используют классы.
|
danik.js,
нет никаких оснований использовать id в жс, классы и для этого подходят весьма неплохо |
указывая this в функции, вы ссылаетесь на объект, которому она принадлежит. В вашем случае на объект window.
Если функция будет задана как someObj.lol = function(){console.log(this)}, то вы получите указатель на объект someObj |
ну вот пример.
есть каталог фильмов. Выводится по 50 штук названий на странице. под каждым названием ряд функциональных иконок, кликая на которые юзер определяет для себя статус фильма (посмотрел, хочу посмотреть, смотрю в данный момент и пр.). Каждая иконка имеет две ипостати (включена, отключена). А еще каждая иконка разумеется привязана к id данного фильма. Итого id каждой иконки = статус_ипостась_id функция ChangeList() парсит этот id и производит необходимые действия. Если такая запись не оптимальна <img id="статус_ипостась_id " src="/images/img.png" onclick="ChangeList(this)" /> то какая будет лучше? |
А лучше будет такая. ЗАведите класс для этих изображений, например, .change-list. Удалите обработчик события onclick в теге и создайте обработчик на основе jquery. Например:
$(".change-list").live("click", function(){ var id = $(this).attr("id") }) И внутри осуществляете необходимые действия $(this) внутри обработчика будет указывать на элемент, на котором сработало событие. |
В идеале, var this = $(this)
Тогда будет храниться объект и не будет происходить поиск в DOM при каждом вызове |
wc3banderlog,
сделал по вашему методу. Вышла ошибка TypeError: $(...).attr(...) is undefined :( |
Цитата:
var id = this.id; ![]() |
Цитата:
danik.js, и так можно тоже. Или вот так, this.getAttribute('id'). |
wc3banderlog,
<script type='text/javascript' src='/js/jquery/jquery-1.6.1.min.js'></script> <script type="text/javascript"> $(function(){ $(".icons").click(function(){ var arr = $(this).attr('id').split('_'); }) }) </script> <div class="icons"> <img id="seen_1" src="/images/new_icons/seen_yes.png" /> </div> |
Вы делаете обработчик на div. Следовательно $(this) внутри обработчика будет ссылаться на сам див.
Чтобы обработать ваш id, нужно сначала найти этот элемент. Например так, var arr = $(this).find("img").attr('id').split('_'); |
ага, тоже сам допер уже.
вот такой вариант вполне работает $(".icons img").click(function() Спасибо большое!!! |
Либо так =)
|
Часовой пояс GMT +3, время: 08:28. |