Jestem pośrednim programistą JS na poziomie frontowym i próbuję wzorca modułu opisanego przez Chrisa Coyyera here.Zdarzenie kliknięcia jQuery nie działa podczas korzystania z "Wzorca modułu"
Ale kiedy przechowuję selektor jQuery w ustawieniach, nie mogę go użyć do wywołania zdarzenia kliknięcia. Zobacz poniższy kod z moimi komentarzami ... Każda pomoc jest bardzo doceniana!
var s,
TestWidget = {
settings: {
testButton: $("#testing")
},
init: function() {
s = this.settings;
this.bindUIActions();
},
bindUIActions: function() {
console.log(s.testButton); // This works: [context: document, selector: "#testing", constructor: function, init: function, selector: ""…]
//This doesn't work - why?????
s.testButton.click(function() {
//Why isn't this triggered?
alert('testButton clicked');
});
/*This works, obviously:
$('#testing').click(function() {
alert('testButton clicked');
});
*/
}
};
$(document).ready(function() {
TestWidget.init();
});
+1 za "nadużywanie wzoru" – Bergi
Myślę, że op po prostu podążał za przykładem sztuczek CSS, aby zrozumieć wzór. Być może istnieje większe zadanie pod ręką? Jeśli celem jest zrozumienie enkapsulacji poprzez modularyzację, polecam czytanie wzorców projektowych przez addy osmani. – stavarotti
Umieszczenie bloków skryptu u dołu strony, po całej zawartości, rozwiązałoby ten problem. Umożliwiłoby to umieszczenie kodu w całości wewnątrz modułu bez wycieku do globalnej przestrzeni nazw. –