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('_'); |
Часовой пояс GMT +3, время: 08:14. |