Вход

Просмотр полной версии : Установка обработчика события


dvikv
12.01.2012, 13:44
Мне нужно установить обработчик нажатия мышкой на div.
Всего на странице 4 нужных мне дива, которые возвращаются мне вызовом функции $("div.hasDatepicker").
Повесить на них на все обработчик - не проблема:

$("div.hasDatepicker").bind('click', fc);

Но мне нужно повесить 4 разных обработчика!
Я пытался сделать это так:

$("div.hasDatepicker")[0].bind('click', fc1);
$("div.hasDatepicker")[1].bind('click', fc2);
$("div.hasDatepicker")[2].bind('click', fc3);
$("div.hasDatepicker")[3].bind('click', fc4);

Но при этом в браузере выводится ошибка:
Uncaught TypeError: Object #<HTMLDivElement> has no method 'bind'
Как мне сделать это правильно?

Octane
12.01.2012, 14:12
http://api.jquery.com/eq/

youmay
12.01.2012, 14:19
$("div.hasDatepicker[0]").bind('click', fc1);
$("div.hasDatepicker[1]").bind('click', fc2);
$("div.hasDatepicker[2]").bind('click', fc3);
$("div.hasDatepicker[3]").bind('click', fc4);

Pavel M.
12.01.2012, 14:41
$("div.hasDatepicker[0]")

первый раз такую запись вижу, откуда это взяли ?

youmay
12.01.2012, 14:56
Да, сорри, ошибся конечно.
$("div.hasDatepicker:eq(0)").bind('click', fc1);
$("div.hasDatepicker:eq(1)").bind('click', fc2);
$("div.hasDatepicker:eq(2)").bind('click', fc3);
$("div.hasDatepicker:eq(3)").bind('click', fc4);

snapson
13.03.2012, 19:51
Или можно сделать таким образом:

$("div.hasDatepicker").each(function(i){
$(this).live("click",function(e){
alert(i+1);//вместо alert, пишете свою функцию, счет будет идти с 1
});
});