codeisforeva
codeisforeva

Reputation: 469

Uncaught syntax error with jquery plugin and chrome, works fine in other browsers

Basically I'm trying to develop a simple plugin that allows us to dynamically generate our GA onclicks straight from JSON. So I developled this quick script. Works great but chrome fires "Uncaught SyntaxError: Unexpected identifier"

Suggestions?

Test HTML file:

<script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="modules/onclicks/onclickify.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    $.getJSON('modules/onclicks/clicks.json', function(data) {
        $('#analytics').onclickify(data);
    });
});

</script>
<script id="analytics"></script>

jQuery plugin file

(function( $ ){



$.fn.onclickify = function(clicks) {  

var onclicks = "";

return this.each(function() {

  $.each(clicks, function(key, value){

    onclicks += "$('"+value.selector+"')";
    onclicks += ".live('click', function(){\n";
    onclicks += "_gaq.push(['_trackEvent',";
    onclicks += value.name+"','";
    onclicks += value.label+"','";
    onclicks += value.action+"');\n";
    onclicks += "});\n\n";

  });

  $(this).append(onclicks);

});

};
})( jQuery );

Upvotes: 0

Views: 400

Answers (1)

Pointy
Pointy

Reputation: 413712

That's not going to work. You can't append a blob of jQuery source code like that. Well, you can, but it's not going to do anything like what you think it is.

I'm not sure what exactly you're trying to do, but I think you could just do it like this:

(function( $ ){



$.fn.onclickify = function(clicks) {  

   return this.each(function() {

     $.each(clicks, function(key, value){

      $(value.selector)
        .live('click', function(){
         _gaq.push(['_trackEvent',
           value.name,
           value.label,
           value.action
         ]);
       });
     });
   });

  };
})( jQuery );

Upvotes: 1

Related Questions