( 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"
} );
答案 0 :(得分:1)
.each()
函数迭代jQuery对象的内容,即它的上下文。在您的情况下,您根本没有上下文对象,因此.each()
将不执行任何操作。
鉴于你的函数的性质,我不明白为什么它成为一个jQuery函数是有意义的。您可以将其直接挂在$
对象上,如果您这样做,那么您根本不需要.each()
。
答案 1 :(得分:0)
这就是你打电话的方式。你需要在选择器上调用它而不是fn。