我有一个带有许多.item div的同位素#container div,可以通过在嵌套的.header div中单击来最大化和最小化。当观众直接点击另一个内容div时,它们也会自动最小化,而不会最小化(点击标题)当前最大化的内容。
因此,Google分析事件跟踪有时会被触发两次:当查看者没有直接点击另一个.item div的.header div时 - 但是在点击另一个之前,首先点击它来决定最小化当前最大化的一个.item div。
我应该如何修改逻辑,以便只在我的分析中注册一次点击事件?
$('.header').click(function () { // instead of registering the entire .item div (default use), only its .header div (child div) receives clicks
var $previousSelected = $('.selected'); // necessary for maximising and minimising
if ($(this).parent().hasClass('selected')) { // use $(this).parent() - not $(this) - because the .header div is a child of the .item div
$(this).parent().removeClass('selected');
$(this).parent().children('.maximised').hide();
$(this).parent().children('.minimised').show();
$items.find('.minimised').removeClass('overlay'); // returns all .minimised divs to previous state after the .item is closed again
} else {
$previousSelected.removeClass('selected');
$previousSelected.children('.minimised').show();
$previousSelected.children('.maximised').hide();
$(this).parent().addClass('selected');
$(this).parent().children('.minimised').hide();
$(this).parent().children('.maximised').show();
$items.not('.selected').find('.minimised').addClass('overlay'); // adds .overlay on each .item which is not currently .selected
}
$container.isotope('reLayout');
<!-- ga project interest tracking -->
var clicked = $(this).parent().data('item');
_gaq.push(['_trackEvent', 'Items viewed', 'Clicked', clicked, null, true]);
});
答案 0 :(得分:1)
因此,如果我理解正确,您只想在最大化某些内容时触发GA跟踪:
$(this).parent().children('.maximised').show(function(){
_gaq.push(['_trackEvent', 'Items viewed', 'Clicked', clicked, null, true]);
});
您也可以尝试.click
功能的底部:
if( $(this).parent().children('.maximised').is(':visible') ){
_gaq.push(['_trackEvent', 'Items viewed', 'Clicked', clicked, null, true]);
}