2017-11-01 5 views
0

Wie der Titel sagt, habe ich etwas Code, der nur einmal das Click-Ereignis auslöst. Kannst du das mal sehen?jQuery Klick-Funktion nur einmal aufgerufen

UPDATE: Ich habe den Code bearbeitet, um die gesamte Funktion anzuzeigen. Ich mache ein Plugin für jQuery. Wie auch immer, der Punkt ist, dass der Code funktioniert, aber die Klick-Funktion von a.click() Ets gefeuert nur einmal, nur einen Filter entfernen.

addFilterProcess: function() 
    { 
     var $this = this; 
     var select_filters = this.select_filters; 
     var selected_filter = select_filters.val(); 

     if (selected_filter != 0) 
     { 
      if (this.active_filters.length == 0) 
      { 
       this.active_filters.push(selected_filter); 
       this.used_filters.append(this.template_show_filter(this.options.available_filters[selected_filter], selected_filter)); 


       var filter = this.used_filters.find('#filter-'+selected_filter); 
       var a = filter.find('a'); 
       a.click(function() { 
        $this.removeFilter(a.attr('filter')); 
       }); 

       this.btn_apply_filters.show(); 
       this.btn_cancel_filters.show(); 

       this.btn_apply_filters.on('click', function() { 
        $this.applyFilters(); 
       }); 
       this.btn_cancel_filters.on('click', function() { 
        $this.cancelFilters(); 
       }); 


       /* 
       Reset the select, to show the first option 
       */ 
       select_filters.val(0); 
      } 
      else 
      { 
       if (this.active_filters.indexOf(selected_filter) === -1) 
       { 
        this.active_filters.push(selected_filter); 
        this.used_filters.append(this.template_show_filter(this.options.available_filters[selected_filter], selected_filter)); 

        /* 
        Reset the select, to show the first option 
        */ 
        select_filters.val(0); 
       } 
      } 

     } 
    }, 
+0

'Versuche this' $ erscheint in' .click() 'Handler nicht definiert werden. Was ist '.removeFilter()'? – guest271314

+0

Worauf bezieht sich '$ this'? Wie können wir Ihnen ohne [mcve] helfen? In dem von Ihnen geposteten Code gibt es keinen Hinweis darauf, warum der Event-Handler möglicherweise nur einmal aufgerufen wird. –

+1

* "nur einmal ausgelöst und nur ein Filter entfernt." * Was genau bedeutet das? Erwarten Sie ** einen ** Klick, um ** mehrere ** Filter zu entfernen? Wenn ja, welche Filter werden voraussichtlich entfernt? Was gibt 'a.attr ('filter')' zurück? Wie funktioniert '$ this.removeFilter'? Oder wird der Event-Handler nicht ein zweites Mal aufgerufen, wenn Sie das Element ein zweites Mal anklicken? Es ist nicht klar, was das Problem ist, und Sie liefern nur unvollständige Informationen. Auch hier bitte ein [mcve]. Je mehr Informationen Sie zur Verfügung stellen, desto einfacher können wir Ihnen helfen (oder Sie lösen das Problem selbst). –

Antwort

1

$(this).removeFilter(a.attr('filter')); 
+0

jQuery hat standardmäßig keine Methode 'removeFilter'. Auch warum glaubst du, dass dies das OP-Problem löst? –

+0

dude seinen Teil meines Codes, und das ist nicht der Punkt. –

+0

es wird nicht funktionieren. Wie ich schon sagte, mein Code funktioniert, aber die Klick-Funktion wird nur einmal ausgelöst –

Verwandte Themen