Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2011, 19:35
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

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?
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2011, 19:36
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Сравните по id
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2011, 19:44
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

$("#div1") это объект jquery
чтобы получить dom объект
можно использовать $("#div1")[0] или $("#div1").get(0)
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2011, 20:03
Аспирант
Отправить личное сообщение для jsuse Посмотреть профиль Найти все сообщения от jsuse
 
Регистрация: 10.04.2010
Сообщений: 92

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

if (targetElem == $("#div1").get(0)) или
if (targetElem.id == $("#div1").attr("id"))
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2011, 20:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от jsuse
if (targetElem == $("#div1").get(0))
По-мне так этот вариант более предпочтительнее смотрится...
Ответить с цитированием
  #6 (permalink)  
Старый 04.12.2011, 15:52
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

if ($("#div1").is(targetElem))
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему примитивные типы не объекты? Kfuse Общие вопросы Javascript 13 29.04.2010 14:32