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 に答える