Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   'click' для разных селекторов (https://javascript.ru/forum/jquery/38472-%27click%27-dlya-raznykh-selektorov.html)

bannndi 03.06.2013 15:14

'click' для разных селекторов
 
Добрый день!

использую jQuery 1.5.2
Пытаюсь реализовать следующую вещь:


назначаю клик для двух разных селекторов, чтобы не дублировался вызов функции. Различие этих селекторов в следующем:
#setAll должен установить дату для всех <td> в наборе $('#setAll')
#setOne должен установить дату только для своего <td> $('#setOne'), т.е. по которому непосредственно кликнули.

Подозреваю, что нужно сравнивать $(this) в обработчике, но пока не получается достичь нужного результата. Может быть, я даже пытаюсь сделать не совсем оптимальную вещь.

$('body').delegate('#setAll.date, #setOne.date', 'click'
    ,function(){

// если клик по #setOne, то дата должна устанавливаться только в эту ячейку

// если клик по #setAll, дата должна устанавливаться во все ячейки набора #setAll



    }); 
}



Вопрос в следующем - каким условием я могу определить, что клик был по #setAll или #setOne?


PS: id #setAll и #setOne, используются вместо классов временно, наследие, так сказать

Aetae 03.06.2013 15:41

this.id

рони 03.06.2013 15:41

bannndi,
Вариант...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>

<body>
<select id="setAll" name="" size="1" class="date">
<option value="1">test</option>
</select>
<select id="setOne" name="" size="1" class="date">
<option value="2">test</option>
</select>
<script>
$('body').delegate('#setAll.date, #setOne.date', 'click'
    ,function(){
alert([this.id,$(this).attr('id')])
    });
</script>
</body>

</html>

bannndi 03.06.2013 17:43

спасибо, этот момент понял)

Теперь другая проблема:
Поскольку для #setOne как правило больше одного <tr> в наборе, теперь непонятно как правильно передать функции указатель, что именно в этот элемент с таким то индексом нужно записать значение даты.

Можно создать кастомный атрибут для кликнутого элемента, и в функции найти по этому атрибуту. Но думаю, этот вариант не оптимален.

Пробовал установить данные через метод $.data(), но не получилось установить для конкретного индекса в наборе - только для всего селектора.

Aetae 03.06.2013 18:02

У jquery есть index, у tr - tr.rowIndex.


Часовой пояс GMT +3, время: 09:39.