单击一个案例开关

时间:2017-02-08 14:28:50

标签: javascript switch-statement

我有一些实际上正在做同样事情的点击事件。有人告诉我,我应该使用一个案例开关,这样我就可以减少我的代码。但我不知道如何与点击事件结合使用。

$( "#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']);
}

谢谢!

2 个答案:

答案 0 :(得分:3)

虽然你可以使用switch/case,但这可能不是最好的主意。你仍然需要在每个类/ ID上监听click个事件,所以我会创建一个函数并用特定的字符串调用它。

使用上面的代码,您可以创建如下函数:

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

现在只需使用click监听器:

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

因此,下次您想要更改代码时,只需更改tagRecording功能(您可以根据需要重命名)。

答案 1 :(得分:1)

此处的另一个选择是在标记中使用数据属性。将要传递的邮件添加到每个元素中的data-text属性 -

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

然后你可以设置一个JS处理程序,它从你的数据属性中获取文本:

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

当然,这只有在你控制了标记的创建时才有效。