2014-03-19 3 views
3

В моей функции я беру тип узла, node и прикрепляя onclick к каждому узлу в документе этого типа.Как сравнить event.target с селектором

Затем я хочу посмотреть на элемент, который был нажат, и «залить пузырь», т. Е. Добавить эффект к узлу над ним, который будет выбран selector.

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

Так что я сравниваю target к (в части с окружающей средой * 's) ?

function myFunc(node, event, selector){ 

    var elements = document.querySelectorAll(node); 

    for (var i = 0; i < elements.length; i++){ 
     elements[i].onclick = function(event){ 
      var target = event.target; 
      while (target != node){ 
       **if (target == selector) ** 
         applyEffects(target); 
      } 
      target = target.parentNode; 
     }; 
    } 

} 

Кроме того - я не разрешено использовать JQuery. (Это часть домашнего задания, но мой вопрос не имеет прямого отношения к нему)

ответ

0

Чтобы проверить, является ли element (в вашем случае target) был бы подкреплен selector:

Array.prototype.indexOf.call(document.querySelectorAll(selector), element) !== -1 
+0

Это способ перехитрить это ... Но это более кросс-браузер, чем ['matches'] (https://developer.mozilla.org/en-US/docs/Web/API/Element.matches) – Oriol

+0

@Oriol Wasn Я не знал об этом методе, поэтому я его не использовал. – sabof

+0

@ Ориол на самом деле только Chrome поддерживает его беспрепятственно – sabof