Определить на какой элемент был клик
Доброго времени суток.
Опишу пример: На странице есть два блока с одинаковым классом, но они находятся в разных контейнерах. По клику на блоки выполняется много одинаковых Действий, Но есть несколько действий которые надо выполнить по клику только на определённый блок. Каким образом можно задать-определить условие, на какой из блоков .button был произведён клик ?? jQuery(".block1 .button, #block2 .button").live("click", function(){ //Выполняются одинаковые действия для обоих блоков..... jQuery.ajax({cache:false, url: main_url, dataType: "html",ifModified:true,success: function(jsondata){ //Выполняются одинаковые действия для обоих блоков..... //А вот теперь надо определить на какой имено блок был произведён клик... ??? if (#block2 .button -- Если клик был сделан на етот блок) { //Выполнить действия только для етого блока... } }, //Выполняются одинаковые действия для обоих блоков..... }) Прошу не ругайте сильно за Кривой скелет, старался максимально обьяснить что я пытаюсь сделать |
Если родители разные то как вариант проверять какой родитель
if($(this).parent().attr("class") == "block1"){ //Делаем что то } Но можно не только по атрибутам |
Про такой момент я думал, но ето не то :cray:
Родители одинаковые, блоки .button вложены достаточно глубоко .block1 .(тут много родителей у блока .button) .button #block2 .(тут много родителей у блока .button) .button И в вашем варианте в this будет хранится Ajax запрос (ну может я неправ, опыта мало...) , разные действия мне надо выполнить именно при удачном выполнении Ajax"a, при услови что было кликнуто на тот или иной .button |
Цитата:
|
avantyrist,
jQuery(".block1 .button, #block2 .button").live("click", function(){ var indx = jQuery(".block1 .button, #block2 .button").index(this) //Выполняются одинаковые действия для обоих блоков..... jQuery.ajax({cache:false, url: main_url, dataType: "html",ifModified:true,success: function(jsondata){ //Выполняются одинаковые действия для обоих блоков..... //А вот теперь надо определить на какой имено блок был произведён клик... ??? if (indx) { //#block2 .button -- Если клик был сделан на етот блок //Выполнить действия только для етого блока... } }, //Выполняются одинаковые действия для обоих блоков..... }) |
:(
Не пройдёт. Контейнер #block2 .button на страницах загружется Ajax"oм. Есть страницы на которых только он загружается. А есть страницы на которых присутствует .block1 .button , и дополнительно при определённых манипуляция загружается #block2 .button, Тоесть индексы всегда будут разные.... :( И не получится составить условие if (indx =0) { делать чтото } else if (indx =1 ) {делать чтото другое} Я думал что есть чтото "встроенное" для определения на какой именно контейнер был клик |
Ну вот this есть
Я просто не заметил что условие проверяется внутри Ajax Можно сначала записать в переменную блок по которому кликнули а потом ajax отправлять типа так var click_block = $(this).attr("class"); а внутри ajax проверять уже на основе переменной А по поводу идентификации блока вариантов немерено - добавить ему класс или айди, или по другому атрибуту проверять |
Спасибо Вам большое !!!
Буду делать с идефикаторами классов. Просто я думал что есть некая встроенная возможность, чтобы не привязываться к классам или айдишкам. Опыта мало, знания - через одно :) |
Часовой пояс GMT +3, время: 04:18. |