2011-11-16 83 views
2

我在實現JQuery星級評分插件時遇到了一些麻煩。有問題的插件可以在http://orkans-tmp.22web.net/star_rating/使用JQuery評級星級並將數據提交到分析

我遇到的麻煩是將分數傳遞給谷歌分析。我設法實現了插件,但出於某種原因,代碼不會觸發分析自定義事件。單擊星標時會提示正確的當前值,這是我想要傳遞給Google分析事件跟蹤的值。

任何幫助將不勝感激,我的代碼如下:

<link rel="stylesheet" type="text/css" media="screen" href="css/styles.css"/> 
<script type="text/javascript" src="js/jquery.min.js></script> 
<script type="text/javascript" src="js/jquery-ui.custom.min.js"></script> 
<script type="text/javascript" src="js/jquery.ui.stars.js"></script> 
<link rel="stylesheet" type="text/css" href="css/jquery.ui.stars.css"/> 


<script type="text/javascript"> 
    var url = location.href; 

    $(function ratingStars(){ 
     $("#ratings").stars({ 
      captionEl: $("#stars-cap"), 
      oneVoteOnly: false, 
     }); 
    }); 

    $(document).ready(function(){ 
     $('.ui-stars-star').click(function() { 
      // Retrieve instance 
      var ui = $("#ratings").data("stars"); 
      var currValue = ui.options.value; 
      //alert the currValue to make sure it is in place. 
      alert(currValue); 
      //send data to track 
      _gaq.push(['_trackEvent', 'UATRatingTest', 'UATRatingTest2', url, currValue]); 
     }); 
    }); 
</script> 

<div class="RatingStars"> 
    <form id="ratings"> 
     <input type="radio" name="rate" value="1" title="Poor" id="rate1" /> 
     <input type="radio" name="rate" value="2" title="Fair" id="rate2" /> 
     <input type="radio" name="rate" value="3" title="Average" id="rate3" /> 
     <input type="radio" name="rate" value="4" title="Good" id="rate4" /> 
     <input type="radio" name="rate" value="5" title="Excellent" id="rate5" /> 
    </form> 
<span style="margin-right:5px; margin-left:10px;"> Rating: </span> <span id="stars-cap"></span> <br/> 

插件創建

<div class="ui-stars-star"> 

對於每個星星而言,這就是爲什麼我在其上放置了點擊功能,嘗試提交給定的分數。

如果任何人有任何以前的經驗,將是偉大的插件。

感謝,

西蒙

回答

1

我找到了我的問題的答案。看來currValue被解析爲一個字符串,而不是分析所需的整數來激發腳本。我通過使用以下代碼將值轉換爲整數來解決此問題:

var myString = currValue; 
var myConvertedInteger; 
myConvertedInteger = parseInt(myString); 
//Check string has been converted 
alert(myConvertedInteger); 
_gaq.push(['_trackEvent', 'UATRatingTest', 'UATRatingTest2', url, myConvertedInteger]); 

感謝您的輸入Rory。

0

如果與被動態創建的.ui-stars-star類元素嘗試live()方法掛鉤的事件:

$('.ui-stars-star').live("click", function() { ... 

或者,如果你使用jQuery 1.7,你可以使用on()

$('.ui-stars-star').on("click", function() { ... 
+0

你好,謝謝你的建議。不幸的是,這並沒有使分析代碼觸發。我不認爲解析分數有任何問題,因爲警報顯示正確的分數。它在分析中的一些東西並不火。不管怎麼說,還是要謝謝你。 – Simon

+0

沒問題。控制檯/ Firebug中是否有任何與Google AJAX調用失敗相關的內容? –

+0

不幸的是,腳本面板中沒有錯誤,只是自定義事件不會向http發起http請求來記錄自定義事件。 – Simon