2015-03-27 3 views
0

Я работаю над довольно большим проектом, и мне хотелось бы найти, какой элемент DOM вызвал вызов ajax.jQuery ajaxSend - какой элемент вызвал ajax?

Я такой код:

initAjaxSend: -> 
    that = @ 
    $(document).ajaxSend (e, xhr, options)-> 
     if typeof event != 'undefined' && event 
     e = event 
     that.showPreloader(e, xhr) 

showPreloader(), чем использование функции e.target, чтобы найти DOM элемент.

Он отлично работает только в Chrome, потому что Chrome имеет глобальную переменную event. Любые идеи, как заставить его работать в других браузерах?

+0

Я не думаю, что вам нужны эти две строки - 'if typeof event! = 'Undefined' && event; e = event' как событие уже передано в 'ajaxSend' – lshettyl

+0

Да, но тогда' e.target' будет всегда 'document', который не является полезным вообще, причем эти две строки работают, по крайней мере, в Chrome. Может быть, концепция этого кода совершенно неверна, но у меня нет других :) – kuba

+0

Уверен, когда вы делаете свой вызов ajax? в процессе? на триггере события? Объясните немного больше, возможно, отредактируйте свой вопрос. – lshettyl

ответ

1

Вы смешиваете глобальное event и событие e, которое создается, когда ваша функция запущена. То, что вы ищете, можно найти в e, который инициируемое событие, под e.delegateTarget, вы читали больше о event.delegateTarget

Цитируя документы: «Для не делегированных обработчиков событий, прикрепленных непосредственно к элементу, event.delegateTarget всегда будут равны до event.currentTarget. "

initAjaxSend: -> 
    that = @ 
    $(document).ajaxSend (e, xhr, options) -> 
     console.log e.delegateTarget 
     that.showPreloader(e, xhr) 
+0

Ну, может быть, я не понимаю некоторые понятия, но 'e.delegateTarget' всегда' document' – kuba

+0

Вы запускаете 'ajaxSend' из элемента' $ (document) ', поэтому вы все время видите его там , Попробуйте вызвать его из другого элемента. – topless

+0

@topless Начиная с jQuery 1.9 невозможно связать событие ajaxSend от другого элемента, кроме 'document' http://jquery.com/upgrade-guide/1.9/#ajax-events-should-be-attached- задокументировать –