Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 09.04.2013, 13:50
Интересующийся
Отправить личное сообщение для irezvov Посмотреть профиль Найти все сообщения от irezvov
 
Регистрация: 24.11.2011
Сообщений: 24

danik.js,
нет никаких оснований использовать id в жс, классы и для этого подходят весьма неплохо
Ответить с цитированием
  #12 (permalink)  
Старый 09.04.2013, 14:56
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

указывая this в функции, вы ссылаетесь на объект, которому она принадлежит. В вашем случае на объект window.

Если функция будет задана как someObj.lol = function(){console.log(this)}, то вы получите указатель на объект someObj
Ответить с цитированием
  #13 (permalink)  
Старый 09.04.2013, 16:10
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

ну вот пример.
есть каталог фильмов. Выводится по 50 штук названий на странице.
под каждым названием ряд функциональных иконок, кликая на которые юзер определяет для себя статус фильма (посмотрел, хочу посмотреть, смотрю в данный момент и пр.).
Каждая иконка имеет две ипостати (включена, отключена). А еще каждая иконка разумеется привязана к id данного фильма.
Итого id каждой иконки = статус_ипостась_id

функция ChangeList() парсит этот id и производит необходимые действия.
Если такая запись не оптимальна
<img id="статус_ипостась_id "  src="/images/img.png"   onclick="ChangeList(this)"  />

то какая будет лучше?
Ответить с цитированием
  #14 (permalink)  
Старый 09.04.2013, 16:56
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

А лучше будет такая. ЗАведите класс для этих изображений, например, .change-list. Удалите обработчик события onclick в теге и создайте обработчик на основе jquery. Например:

$(".change-list").live("click", function(){
var id = $(this).attr("id")
})

И внутри осуществляете необходимые действия

$(this) внутри обработчика будет указывать на элемент, на котором сработало событие.
Ответить с цитированием
  #15 (permalink)  
Старый 09.04.2013, 17:04
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

В идеале, var this = $(this)

Тогда будет храниться объект и не будет происходить поиск в DOM при каждом вызове
Ответить с цитированием
  #16 (permalink)  
Старый 09.04.2013, 18:25
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

wc3banderlog,

сделал по вашему методу.
Вышла ошибка TypeError: $(...).attr(...) is undefined
Ответить с цитированием
  #17 (permalink)  
Старый 10.04.2013, 02:25
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от wc3banderlog
var id = $(this).attr("id")
Во народ пошел. Без jQuery даже свойство объекта не может получить
var id = this.id;

Ответить с цитированием
  #18 (permalink)  
Старый 10.04.2013, 08:00
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

Сообщение от зверек Посмотреть сообщение
wc3banderlog,

сделал по вашему методу.
Вышла ошибка TypeError: $(...).attr(...) is undefined
Приведите полный пример кода, который вы используете


danik.js, и так можно тоже. Или вот так, this.getAttribute('id').
Ответить с цитированием
  #19 (permalink)  
Старый 10.04.2013, 09:44
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

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>
Ответить с цитированием
  #20 (permalink)  
Старый 10.04.2013, 09:48
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

Вы делаете обработчик на div. Следовательно $(this) внутри обработчика будет ссылаться на сам див.
Чтобы обработать ваш id, нужно сначала найти этот элемент.

Например так, var arr = $(this).find("img").attr('id').split('_');
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сайт для работы с VK API, OpenAPI. С чего начать? Win32 Серверные языки и технологии 2 29.01.2014 22:23
Кстати а с чего megaupload Оффтопик 11 09.03.2013 20:45
canvas: С чего лучше начать? Esigns Общие вопросы Javascript 1 08.01.2013 10:44
С чего начать? virt Flash 3 17.07.2011 08:52
Превьювер - подскажите с чего начать? Travolta Общие вопросы Javascript 1 07.02.2010 14:22