Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2015, 01:48
Интересующийся
Отправить личное сообщение для Kot137 Посмотреть профиль Найти все сообщения от Kot137
 
Регистрация: 23.11.2013
Сообщений: 10

Как задать функцию на клик с параметрами в виде значений
Здравствуйте!
Как задать функцию на клик с параметрами в виде значений, а не в виде переменных? Поясню:

У меня есть множество однотипных элементов box0..box100, нужно чтобы по клику на любой из них выполнялась функция, в которую нужно передать номер элемента.
Если сделать так:
for(s=0; s<101; s++){
  $("#box"+s).click(function(){mapzoom(s);});
}
,
то при клике в mapzoom передастся текущие значение s, не зависимо от нажатого элемента.
А мне нужно, чтоб при нажатии, например, на box16 в mapzoom передавалось 16.
Посоветуйте пожалуйста красивое решение
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2015, 02:07
Интересующийся
Отправить личное сообщение для Kot137 Посмотреть профиль Найти все сообщения от Kot137
 
Регистрация: 23.11.2013
Сообщений: 10

Пока зделал вот-так, работает, конечно, нормально
$("#box"+s).attr("onclick", "mapzoom("+s+");");

Но, вопрос открытый. При назначении функций через JQ, как зафиксировать значения в цикле?
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2015, 04:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А переменная, это не значение?

Номер, это собственно индекс элемента в наборе, по которому произведен щелчок. В jQuery есть метод возвращающий индекс - index(). А чтобы работать с индексами, нужно обращаться к коллекции.

$("#box"+s).attr("onclick", "mapzoom("+s+");"); - это несуразица, и нужно, например, для элементов с классом "myclass" поступить так:

$('div.myclass').click(function() {
    func($(this).index())
})


Если работать с id элементов и при этом номер привязанный к id может быть и не последовательным, то лучше задавать имена id например так - box-0, box-6, box-7... Такой селектор удобен для выбора среди boxmain и прочих:

$('[id|=box]').click(function() {
    func(this.id.split('-').pop())
})
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2015, 19:00
Интересующийся
Отправить личное сообщение для Kot137 Посмотреть профиль Найти все сообщения от Kot137
 
Регистрация: 23.11.2013
Сообщений: 10

Сообщение от laimas Посмотреть сообщение
$('[id|=box]').click(function() {
    func(this.id.split('-').pop())
})
Благодарю за отличный пример!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при быстром многократном клике по кнопке обрабатывать только первый клик battrack jQuery 3 22.03.2012 10:47
Указание ссылки на функцию с параметрами user_i Общие вопросы Javascript 5 06.02.2012 12:08
как реализовать свою функцию к переменной czp Общие вопросы Javascript 2 01.01.2012 19:52
Как правильно задать ID в создаваемом элементе ? Indiana Events/DOM/Window 15 31.10.2010 16:15
Как вытащить функцию из input'a mosk Элементы интерфейса 4 20.05.2010 18:09