0
( function( $ ) {              
    jQuery.support.cors = true;

    function CleanQueryString( query )
    {
        return encodeURI( query ); 
    };

    $.fn.GoogleSearchResult = function( options ) {  

        var settings = $.extend( {
            query: null,
            googleApiKey: "something",
            googleUrl: "https://www.googleapis.com/shopping/search/v1/public/",
            concatUrl: "",
            country: "UK",
            cleanQuery: ""
        }, options); 

        alert("im here"); // THIS ALERTS

        return this.each( function() {
            alert("q:" +settings.query); // THIS DOES NOT?  
            if( settings.query )
            {                                 
                alert(":" + settings.query);
                settings.cleanQuery = CleanQueryString( settings.query );
                $.ajax({       
                    dataType: "json", 
                    async: false,  
                    url: settings.googleUrl,       
                    data: {
                        key: settings.googleApiKey,
                        country: settings.country,
                        q: settings.cleanQuery,
                        alt: 'json'
                    },      
                    success: function( data ) {    
                        alert( data );
                        return data;           
                    },
                    error: function(xhr, status, error) { 
                        alert("error " + status + " " + error); 
                    }   
                });
            }  
        } );     
    };  
} )( jQuery );

在返回 this.each jquery 插件之前,我的代码已经失效了,有什么想法吗?

我打电话给它:

$.fn.GoogleSearchResult( { 
     query: "the apple ipad"
} );
4

2 回答 2

1

.each()函数迭代作为它的上下文的 jQuery 对象的内容。在您的情况下,您根本没有上下文对象,因此.each()什么也不做。

鉴于您的函数的性质,我不明白为什么将它作为一个 jQuery 函数是有意义的。我猜你可以把它直接挂在$物体上,如果你这样做,那么你根本不需要.each()

于 2013-02-13T15:05:20.997 回答
0

这就是你所说的方式。您需要在选择器而不是 fn 上调用它。

于 2013-02-13T15:08:18.613 回答