2013-02-18 44 views
1

我使用jQuery評分plugin,我無法將成功消息顯示到相應的div,因爲$(this)沒有引用選擇器,而是返回Object對象。

Here's plugin code

這裏是我的代碼:

$(".basic").jRating({ 
    bigStarsPath: 'assets/stars.png', 
    rateMax: 5, 
    length : 5, 
    phpPath : '<%= Rails.application.class.routes.url_helpers.ratings_path %>', 
    onSuccess : function(){ 
     $(this).find(".message").append('<small>Thanks for your vote!</small>'); 
    } 
    }); 

所以問題是,$(這)不是指$(「基本」),我不知道我怎麼能內的通路選擇插入。 我很確定這可能是一個新問題,但我的JavaScript技能並不廣泛。 預先感謝您。

+0

'對象object'是你當你轉換一個字符串的對象。嘗試使用'alert($(this))'進行調試? – 2013-02-18 17:38:56

回答

0

關於到jRating源代碼code line這將傳遞到的onSuccess和onError的處理程序的參數是元素和評價,因此解決辦法是:

$(".basic").jRating({ 
bigStarsPath: 'assets/stars.png', 
rateMax: 5, 
length : 5, 
phpPath : '<%= Rails.application.class.routes.url_helpers.ratings_path %>', 
onSuccess : function(element /*, rating */){ 
    $(element).find(".message").append('<small>Thanks for your vote!</small>'); 
} 
}); 
0

onSuccess的第一個參數是element。使用它。

onSuccess : function(element){ 
    $(element).find(".message").append('<small>Thanks for your vote!</small>'); 
} 

它是由插件設置this的東西,而在這種情況下,插件觸發onSuccess功能與this爲你傳遞給jRating而不是元素options對象。

0
onSuccess : function(element, rate){ 
    $(element).find(".message").append('<small>Thanks for your vote!</small>'); 
} 

您可以在成功選項中訪問元素和/或速率。

0
var elem = $(this); 
$(".basic").jRating({ 
    bigStarsPath: 'assets/stars.png', 
    rateMax: 5, 
    length : 5, 
    phpPath : '<%= Rails.application.class.routes.url_helpers.ratings_path %>', 
    onSuccess : function(){ 
     elem.find(".message").append('<small>Thanks for your vote!</small>'); 
    } 
    }); 
相關問題