2013-03-20 4 views
0

Я в clojurescript, используя jQuery, но ответ должен быть таким же для cljs и js, я думаю.В jQuery, как передать событие в родительский якорь, если необходимо?

У меня есть вспомогательная функция, которая создает создает элемент привязки, а затем помещает внутри него элемент значка. У моего якоря есть уникальный класс для типа кнопки.

Когда я что-то вроде

$ ('мой-БТН-типа.') Нажмите (функция (е) {console.log (e.target)}).

  • печатает если значок щелкнул (даже если обработчик на родителя)
  • печатает, если только якорь щелкнул

меня постоянно проблема, где значок, который обернут anchor - это цель события, а не якорь с прикрепленным к нему обработчиком. Я использую атрибуты данных в элементе привязки, которые необходимы в моей функции обработчика. Это заставляет меня вручную проверять, является ли event.target значком или якорем, а затем вручную пузырится событие или двигаться вперед.

Это кажется хакерским и является болью. Должен быть простой способ привязать обработчик в jQuery, js или clojurescript, который будет вызывать только элемент, к которому привязан обработчик. Как мне это сделать?

редактировать:

Использование «это» было то, что мне было нужно, но в clojurescript это, поскольку макрос требуется. В этой теме есть пример enter link description here

+3

'this' всегда будет ссылаться на элемент, который вы связали событие. –

+0

Итак, проблема заключается в том, что событие запускается при нажатии значка? – yoshi

+0

Я не понимал, что это так. Это хорошо знать. К сожалению, я не смог получить доступ к этому «объекту» из clojurescript. Может быть, это оправдывает другой поток, если использовать «это» - это идиоматический способ делать то, что я хочу. –

ответ

0

Если я понял это правильно, похоже, вы подключаете событие click для якоря и значка.

Или якорь и значок имеют одно и то же имя класса.

например:

<a href="#" class="my-btn-type" > 
    <img src="../img/icon.png" class="my-btn-type" /> 
</a> 
+0

У меня просто есть «my-btn-type» на якоре вместе с атрибутами данных, к которым я должен иметь доступ. Когда я нажимаю значок, внутри якоря, он все еще запускает событие, но, очевидно, результаты таких функций, как $ (e.target) .data («my-data»), не работают корректно, так как значок не имеет атрибуты данных, которые делает привязка. Я не хочу добавлять все атрибуты данных к обоим элементам, которые я делал в прошлом. –

+0

Можете ли вы опубликовать еще какой-нибудь код, чтобы я мог посмотреть и лучше? – DanielDMO