如何使用jQuery插件访问$(this)

时间:2013-02-18 17:20:47

标签: javascript jquery plugins selector this

我正在使用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>'); 
     }
   });

所以问题是$(this)没有引用$(“。basic”),我想知道如何在插件中访问选择器。 我很确定这可能是一个新问题,但我的javascript技能根本不是很广泛。 提前谢谢。

4 个答案:

答案 0 :(得分:0)

onSuccess的第一个参数是element。使用它。

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

由插件将this设置为某个内容,在这种情况下,插件会触发onSuccess函数并将this作为您已通过的options对象到jRating而不是元素。

答案 1 :(得分:0)

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

您可以在“成功”选项中访问元素和/或费率。

答案 2 :(得分: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>'); 
     }
   });

答案 3 :(得分: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>'); 
 }
});