2015-12-11 1 views
0

У меня есть функция, которая работает и выглядит следующим образом:несколько элементов щелкните событие в JavaScript - как JQuery

var $$ = function(selector, context) { 
    context = context || document; 
    var elements = context.querySelectorAll(selector); 
    return Array.prototype.slice.call(elements); 
} 

// My function 
var myFunction = function() { 
    $$('.my-selector').forEach(function(element) { 
     element.addEventListener('click', function(e){ 
      console.log('Do something'); 
     }); 
    }); 
} 

Я предпочел бы он больше похож JQuery:

// My function 
var myFunction = function() { 
    $('.my-selector').click(function(e) { 
     console.log('Do something'); 
    }); 
} 

Я могу» t выяснить, как это сделать. Есть идеи?

(Я хочу, чтобы мой код, чтобы быть независимым от рамок, так что я не хочу, JQuery)

ответ

1

Solution1: с вашей собственной обертке: Скрипач link

var $$ = function(selector, context) { 
    context = context || document; 
    var elements = context.querySelectorAll(selector);  
    var wrapper = function(elem){ 
     var element = elem; 
     this.click = function(cb){ 
     element.forEach(function(el){ 
      el.addEventListener('click', function(e){ 
      cb.apply(element,[e]); 
      }); 
     }); 
     }; 
    }; 

    return new wrapper(Array.prototype.slice.call(elements)); 
} 


$$("#test").click(function(e){ 
console.log("Do something:"+e.type); 
}); 

Solution 2 непосредственно связывания нативный элемент: Fiddler link

var $$ = function(selector, context) { 
    context = context || document; 
    var elements = Array.prototype.slice.call(context.querySelectorAll(selector));  
    elements.click = function(cb){ 
     elements.forEach(function(el){ 
      el.addEventListener('click', function(e){ 
       cb.apply(elements,[e]); 
      }); 
     });  
     }; 

    return elements; 
} 

$$("#test").click(function(e){ 
console.log("Do something:"+e.type); 
}); 
+0

Какой из e решения вы бы использовали? Последний кажется короче, поэтому я, вероятно, воспользуюсь этим. –

+1

Второе решение такое же, как jquery coz, вы можете получить доступ к элементу. В 1-м решении вы не можете получить доступ к элементу, но привязать его к вложенным функциям. Я бы пошел на второй, если я хочу, чтобы он был больше похож на jquery. – Nirus

+0

@ Jens это вам помогло? – Nirus

 Смежные вопросы

  • Нет связанных вопросов^_^