2017-11-01 16 views
0

タイトルには、クリックイベントを1回だけ発生させるコードがあります。みんな見ることができますか?jQueryのクリック機能は1回だけ呼び出されます

更新: 私はコード全体を表示するように編集しました。私はjQuery用のプラグインを作っています。とにかく、コードは動作しますが、a.click()のクリック機能は1回だけ起動され、1つのフィルタのみが削除されます。

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

を試してみてください '$のthis'は' .click() 'ハンドラ内で未定義ているように見えます。 '.removeFilter()'とは何ですか? – guest271314

+0

'$ this'は何を参照していますか?私たちは[mcve]なしであなたをどのように助けることができるでしょうか?あなたが投稿したコードには、イベントハンドラが一度しか呼び出されない理由を示すものは何もありません。 –

+1

* "1回だけ起動すると、1つのフィルタのみを削除します。" *正確にはどういう意味ですか? **複数の**フィルタを削除するには**ワン**クリックを期待していますか?削除すると思われるフィルタはどれですか? 'a.attr( 'filter')'は何を返しますか? '$ this.removeFilter'はどのように機能しますか?または、要素をもう一度クリックすると、イベントハンドラは2度目に呼び出されませんか?問題の内容は不明で、不完全な情報しか提供していません。もう一度[mcve]を入力してください。あなたが提供する情報が多ければ多いほど、私たちはあなたの手助けをしやすくなります。 –

答えて

1

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

jQueryにはデフォルトで 'removeFilter'メソッドがありません。また、なぜこれがOPの問題を解決すると思いますか? –

+0

私のコードのその部分のおかげです。 –

+0

それは動かないでしょう。私が言ったように、私のコードは機能しますが、クリック機能は一度だけ起動します –

関連する問題