Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Определить на какой элемент был клик (https://javascript.ru/forum/jquery/53941-opredelit-na-kakojj-ehlement-byl-klik.html)

avantyrist 25.02.2015 03:02

Определить на какой элемент был клик
 
Доброго времени суток.
Опишу пример:
На странице есть два блока с одинаковым классом, но они находятся в разных контейнерах. По клику на блоки выполняется много одинаковых Действий, Но есть несколько действий которые надо выполнить по клику только на определённый блок.

Каким образом можно задать-определить условие, на какой из блоков .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 -- Если клик был сделан на етот блок) {
      //Выполнить действия только для етого блока...
}

},
      //Выполняются одинаковые действия для обоих блоков.....
})


Прошу не ругайте сильно за Кривой скелет, старался максимально обьяснить что я пытаюсь сделать

Bond 25.02.2015 03:18

Если родители разные то как вариант проверять какой родитель
if($(this).parent().attr("class") == "block1"){
	//Делаем что то
}

Но можно не только по атрибутам

avantyrist 25.02.2015 13:01

Про такой момент я думал, но ето не то :cray:
Родители одинаковые, блоки .button вложены достаточно глубоко

.block1 .(тут много родителей у блока .button) .button
#block2 .(тут много родителей у блока .button) .button

И в вашем варианте в this будет хранится Ajax запрос (ну может я неправ, опыта мало...) , разные действия мне надо выполнить именно при удачном выполнении Ajax"a, при услови что было кликнуто на тот или иной .button

ksa 25.02.2015 13:49

Цитата:

Сообщение от avantyrist
Родители одинаковые, блоки .button вложены достаточно глубоко

В чем тогда разница у тех блоков? :) Ведь ты их как-то собираешся различать? :D

рони 25.02.2015 14:49

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 -- Если клик был сделан на етот блок
      //Выполнить действия только для етого блока...
}

},
      //Выполняются одинаковые действия для обоих блоков.....
})

avantyrist 25.02.2015 16:45

:(
Не пройдёт.
Контейнер #block2 .button на страницах загружется Ajax"oм. Есть страницы на которых только он загружается.

А есть страницы на которых присутствует .block1 .button , и дополнительно при определённых манипуляция загружается #block2 .button, Тоесть индексы всегда будут разные.... :(
И не получится составить условие
if (indx =0) { делать чтото } else if (indx =1 ) {делать чтото другое}
Я думал что есть чтото "встроенное" для определения на какой именно контейнер был клик

Bond 25.02.2015 17:18

Ну вот this есть
Я просто не заметил что условие проверяется внутри Ajax
Можно сначала записать в переменную блок по которому кликнули а потом ajax отправлять
типа так
var click_block = $(this).attr("class");

а внутри ajax проверять уже на основе переменной
А по поводу идентификации блока вариантов немерено - добавить ему класс или айди, или по другому атрибуту проверять

avantyrist 25.02.2015 17:34

Спасибо Вам большое !!!

Буду делать с идефикаторами классов.
Просто я думал что есть некая встроенная возможность, чтобы не привязываться к классам или айдишкам.

Опыта мало, знания - через одно :)


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