2015-10-16 10 views
8

アクティブなクラスがクリックされたときに、そのクラスを切り替えたい複数のリスト項目があります。Vuejsはイベントによって呼び出されている要素を取得していますか?

<ul class="list-body"> 
    <li v-on="click: setFilter('style', 'pils')" v-class="active: isActive">Pils</li> 
    <li>Dubbel</li> 
    <li>Tripel</li> 
    <li v-on="click: setFilter('style', 'Quadrupel')">Quadrupel</li> 
    <li>Wit</li> 
</ul> 

私はすでに、私はクラスonClickを有効にするには、余分な機能を追加することができsetFilterクリック機能を持っています。

setFilter: function(facet, value) { 
    // Facet for style of beer(search filter) 
    this.helper.addDisjunctiveFacetRefinement(facet, value).search(); 
}, 

私の質問はをクリックしてsetFilter方法で呼び出された特定のli要素を選択することができる方法ですか?

li要素ごとに、アクティブクラスの変数をfalseまたはtrueに設定して、クリックした(またはクリックしなかった)要素を設定します。

答えて

6

イベントとイベントのターゲットを関数に直接渡すことができます。 ターゲットは、クリックした要素です。

HTML:

<ul id="demo"> 
    <li v-on="click: onClick">Trigger a handler</li> 
    <li v-on="click: n++">Trigger an expression</li> 
</ul> 

JS:あなたの要素で

var vue = new Vue({ 
    el: '#demo', 
    data: {}, 
    methods: { 
    onClick: function (e) { 
     var clickedElement = e.target; 
    } 
    } 
}) 

あなたがやりたいことができます。たとえば 、あなたはjQueryの使用している場合:私は、引数にイベントハンドラのdoesnを通過しているためのSetFilter(「スタイル」、「ピルス」) :私はこれを使用して私の例ではちょうど簡単な質問

$(clickedElement).siblings().removeClass('active'); 
$(clickedElement).addClass('active'); 
+0

を: クリック仕事はありません。どのように引数を指定して関数のように動作させるにはどうすればいいですか? –

+1

要素自体と引数を渡してはいけません。 あなたのonClick-MethodからsetFilterを呼び出し、そこでクリックされた要素を分析することができます。 – psren

+0

これはVue 2.0では動作しないようです。私は* v-onを使用しようとしました:click = "bla();" *ドキュメントのようなものですが、作業中に送信されるイベントは未定義です。 –

関連する問題