Skip to content

Uncaught SyntaxError: Unexpected identifier #537

Closed
@githubshrek

Description

@githubshrek

I tried to test the code for the http://learn.jquery.com/events/introduction-to-custom-events/ page but I get the error message in the console "Uncaught SyntaxError: Unexpected identifier" at line 124 below ($( "#twitter" ).on( "getResults", function( e, term ) {).

Did I do something wrong or is the code wrong?

<html>
<head>
  <meta charset="utf-8">
  <title>Testing jQuery</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
  <style>
  .on { background-color: yellow; }
  .off { background-color: black; color: grey; }
  </style>
   <script>
   $( document ).ready(function(){
        $( "form" ).submit(function( event ) {
            var term = $( "#search_term" ).val();
            $( "#twitter" ).trigger( "getResults", [ term ] );
            event.preventDefault();
        });


       $.fn.twitterResult = function( settings ) {
            return this.each(function() {
                var results = $( this );
                var actions = $.fn.twitterResult.actions =
                    $.fn.twitterResult.actions || $.fn.twitterResult.createActions();
                var a = actions.clone().prependTo( results );
                var term = settings.term;

                results.find( "span.search_term" ).text( term );
                $.each([ "refresh", "populate", "remove", "collapse", "expand" ], function( i, ev ) {
                    results.on( ev, {
                        term: term
                    }, $.fn.twitterResult.events[ ev ] );
                });

                // use the class of each action to figure out
                // which event it will trigger on the results panel
                a.find( "li" ).click(function() {
                    // pass the li that was clicked to the function
                    // so it can be manipulated if needed
                    results.trigger( $( this ).attr( "class" ), [ $( this ) ] );
                });
            });
        };

        $.fn.twitterResult.createActions = function() {
            return $( "<ul class='actions' />" ).append(
                "<li class='refresh'>Refresh</li>" +
                "<li class='remove'>Remove</li>" +
                "<li class='collapse'>Collapse</li>"
            );
        };

        $.fn.twitterResult.events = {

            refresh: function( e ) {
                // indicate that the results are refreshing
                var elem = $( this ).addClass( "refreshing" );

                elem.find( "p.tweet" ).remove();
                results.append( "<p class='loading'>Loading...</p>" );

                // get the twitter data using jsonp
                $.getJSON( "http://search.twitter.com/search.json?q=" + escape( e.data.term ) + "&rpp=5&callback=?", function( json ) {
                    elem.trigger( "populate", [ json ] );
                });
            },

            populate: function( e, json ) {
                var results = json.results;
                var elem = $( this );

                elem.find( "p.loading" ).remove();
                $.each( results, function( i, result ) {
                    var tweet = "<p class='tweet'>" +
                    "<a href='http://twitter.com/" +
                    result.from_user +
                    "'>" +
                    result.from_user +
                    "</a>: " +
                    result.text +
                    " <span class='date'>" +
                    result.created_at +
                    "</span>" +
                    "</p>";

                    elem.append( tweet );
                });

                // indicate that the results are done refreshing
                elem.removeClass("refreshing");
            },

            remove: function( e, force ) {
                if ( !force && !confirm( "Remove panel for term " + e.data.term + "?" ) ) {
                    return;
                }
                $( this ).remove();

                // indicate that we no longer have a panel for the term
                search_terms[ e.data.term ] = 0;
            },

            collapse: function( e ) {
                $( this ).find( "li.collapse" )
                .removeClass( "collapse" )
                .addClass( "expand" )
                .text( "Expand" );

                $( this ).addClass( "collapsed" );
            },

            expand: function( e ) {
                $( this ).find( "li.expand" )
                .removeClass( "expand" )
                .addClass( "collapse" )
                .text( "Collapse" );

                $( this ).removeClass( "collapsed" );
            }


            $( "#twitter" ).on( "getResults", function( e, term ) {
                // make sure we don't have a box for this term already
                if ( !search_terms[ term ] ) {
                    var elem = $( this );
                    var template = elem.find( "div.template" );

                    // make a copy of the template div
                    // and insert it as the first results box
                    results = template.clone()
                    .removeClass( "template" )
                    .insertBefore( elem.find( "div:first" ) )
                    .twitterResult({
                        "term": term
                    });

                    // load the content using the "refresh"
                    // custom event that we bound to the results container
                    results.trigger( "refresh" );

                    search_terms[ term ] = 1;
                }
            }).on( "getTrends", function( e ) {
                var elem = $( this );

                $.getJSON( "http://search.twitter.com/trends.json?callback=?", function( json ) {
                    var trends = json.trends;
                    $.each( trends, function( i, trend ) {
                        elem.trigger( "getResults", [ trend.name ] );
                    });
                });
            });




            $( "#get_trends" ).click(function() {
                $( "#twitter" ).trigger( "getTrends" );
            });


            $.each([ "refresh", "expand", "collapse" ], function( i, ev ) {
                $( "#" + ev ).click( function( e ) {
                    $( "#twitter div.results" ).trigger( ev );
                });
            });

            $( "#remove" ).click(function( e ) {
                if ( confirm( "Remove all results?" ) ) {
                    $( "#twitter div.results" ).trigger( "remove", [ true ] );
                }
            });
        };
   });
  </script>
</head>
<body>

<h1>Twitter Search</h1>
<input type="button" id="get_trends" value="Load Trending Terms" />

<form>
    <input type="text" class="input_text" id="search_term" />
    <input type="submit" class="input_submit" value="Add Search Term" />
</form>

<div id="twitter">
    <div class="template results">
        <h2>Search Results for
        <span class="search_term"></span></h2>
    </div>
</div>
</html>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions