2017-02-08 3 views
0

私は実際に同じことをしているクリックイベントをいくつか持っています。誰かが私に、これを行うためにケーススイッチを使うべきだと言いました。私は自分のコードを減らすことができます。しかし、私はクリックイベントと組み合わせてそれを行う方法を知らない。オンクリックでケーススイッチ

$("#wishlist_top").on("click", function() { 
    window.hj=window.hj||function(){(hj.q=hj.q||[]).push(arguments)}; 
    hj('tagRecording', ['Klikt op "wishlist" in menu']); 
}); 

$(".wishlist").on("click", function() { 
    window.hj=window.hj||function(){(hj.q=hj.q||[]).push(arguments)}; 
    hj('tagRecording', ['Klikt op "plaats op wishlist"']); 
}); 

$(".product_size").on("click", function() { 
    window.hj=window.hj||function(){(hj.q=hj.q||[]).push(arguments)}; 
    hj('tagRecording', ['Klikt op "maat advies"']); 
}); 

$(".product_stock").on("click", function() { 
    window.hj=window.hj||function(){(hj.q=hj.q||[]).push(arguments)}; 
    hj('tagRecording', ['Klikt op "maat niet beschikbaar?"']); 
}); 

if ($('*').hasClass('404')) { 
    window.hj=window.hj||function(){(hj.q=hj.q||[]).push(arguments)}; 
    hj('tagRecording', ['Klant is op een 404 pagina gekomen']); 
} 

ありがとうございます!

+0

私はあなたが異なった別の例を処理していないので、ここではどうなる 'switch'を使用しているものが表示されません。代わりに、同じ方法で異なるケースを扱うことになります。つまり、重複したコードを別のメソッドに分割して、onclickからメソッドを呼び出すだけで、独自の文字列をパラメータとしてメソッドに渡すことができます。 – TheJim01

+0

私はJimに同意します。これらの2つの共通の文を1つの関数にまとめて、それぞれのクリックイベントコールをパラメータ( 'hj()'の2つのパラメータで送信された違いで機能させることができますが、あなたの助けのためのコードを少し掃除の短い。 –

+0

笑、私は私が言ったことを、以下の答えは正確に説明し参照してください。 –

答えて

3

あなたはこのためswitch/caseを使用することができますが、それは最高のアイデアではないかもしれません。あなたはまだ各クラス/ IDのclickイベントを聞く必要があるので、私は関数を作り、特定の文字列で呼び出すでしょう。だから、あなたのコードを変更したい次回

$("#wishlist_top").on("click", 
    function() { tagRecording('Klikt op "wishlist" in menu'); }); 

function tagRecording(value) { 
    window.hj=window.hj||function(){(hj.q=hj.q||[]).push(arguments)}; 
    hj('tagRecording', [value]); 
} 

今ちょうどそうのようなclickリスナーを使用しますので、は次のように上からあなたのコードを使用して

、あなたは機能を作ることができますtagRecording関数を変更するだけです(名前は自由に変更できます)。

+0

はありがとうございました! – T94

1

ここでもう一つのオプションは、あなたのマークアップでデータ属性を使用することです。

$(".product_stock").on("click", function() { 
    window.hj=window.hj||function(){(hj.q=hj.q||[]).push(arguments)}; 
    hj('tagRecording', $(this).data("text")); 
}); 

:あなたのデータ属性からテキストをつかみ、あなたは1つのJS・ハンドラを設定することができます

<a href="#" class="product_stock" data-text='Klikt op "wishlist" in menu'>Foo</a> 

そして、 - あなたはあなたの要素のそれぞれにおけるdata-text属性に渡したいメッセージを追加します。もちろん、これはマークアップの作成を制御できる場合にのみ機能します。

関連する問題