Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   event.target и else/if. Почему не соответствуют типы объектов? (https://javascript.ru/forum/jquery/23730-event-target-i-else-if-pochemu-ne-sootvetstvuyut-tipy-obektov.html)

jsuse 03.12.2011 19:35

event.target и else/if. Почему не соответствуют типы объектов?
 
Собственно вопрос, как сделать, чтоб типы соответствовали?

Есть такой код:
$("#div1, #div2, #div3").bind("click", function(event) {
var e = event;
var targetElem = e.target;
	
alert(e + targetElem);    // работает, выводит [object Object] [object HTMLDivElement]
alert($("#div1"));        // работает, выводит [object Object]
	
// здесь я хочу отловить таргет на элементе div1
// вроде по синтаксису все правильно написал, а он не работает
if (targetElem == $("#div1")) {
   alert("это div1");
}
});
Видно, что targetElem не соответствует $("#div1").
targetElem - это [object HTMLDivElement]
$("#div1") - это [object Object]

Но в JS такое условие работает, он распознает соответствие:
if (targetElem == document.getElementById("div1"))

А в jQuery это оказываются разные объекты. А как сделать, чтобы не прибегать к JS, а сравнить с таргетом, используя именно синтаксис jQuery?

zebra 03.12.2011 19:36

Сравните по id

Pavel M. 03.12.2011 19:44

$("#div1") это объект jquery
чтобы получить dom объект
можно использовать $("#div1")[0] или $("#div1").get(0)

jsuse 03.12.2011 20:03

Спасибо, все работает.
Значит решения могут быть такие:

if (targetElem == $("#div1").get(0)) или
if (targetElem.id == $("#div1").attr("id"))

ksa 03.12.2011 20:45

Цитата:

Сообщение от jsuse
if (targetElem == $("#div1").get(0))

По-мне так этот вариант более предпочтительнее смотрится...

walik 04.12.2011 15:52

if ($("#div1").is(targetElem))


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