如何为不同的html元素执行相同的JQuery代码?

如何为不同的html元素执行相同的JQuery代码?,jquery,html,css,Jquery,Html,Css,晚上好,无论你在哪里,晚上好, 我只是一个网络开发的初学者,正在做一个学习的小项目 我有一个问题(我相信这很简单,但我不知道该怎么办) 我有一个代码,我试图根据每个值填充费率星: $.fn.stars=函数(){ 返回$(this).each(函数(){ $(this.html($('').width(Math.max(0,(Math.min(5,parseFloat($(this.html())))))*16)); }); } 对于(i=1;ispan').stars(); })。单击();

晚上好,无论你在哪里,晚上好, 我只是一个网络开发的初学者,正在做一个学习的小项目

我有一个问题(我相信这很简单,但我不知道该怎么办)

我有一个代码,我试图根据每个值填充费率星:

$.fn.stars=函数(){
返回$(this).each(函数(){
$(this.html($('').width(Math.max(0,(Math.min(5,parseFloat($(this.html())))))*16));
});
}
对于(i=1;i<3;i++){
var val='输入[名称=金额'+i+']';
变量id='saj'+i;
var submit='#sa'+i;
var extendedId='#so'+i;
$(函数(){
$(提交)。单击(函数(){
$(extendedId).html(“”+parseFloat($(val).val())+“”);
$('#'+id).stars();
});         
$(提交)。单击();
});
}
span.stars,span.stars span{
显示:块;
背景:url(stars.png)0-16px repeat-x;
宽度:80px;
高度:16px;
}
星星{
背景位置:0;
}
萨杰德先生{
显示:无;
}

2.4618164


2.4618164

您的循环在任何单击处理程序执行之前完成,因此您的变量将被设置为其最终值,从而提供您所看到的效果

您可以使用
let
而不是
var
:这样变量(如
id
)就成为
for
循环块的局部变量,事件处理程序函数将引用正确的变量


您应该在
$.fn.star
中更正的另一件事是:jQuery插件函数将
设置为应用该方法的jQuery集合。这意味着它已经是jQuery了,您不应该在
$(this)
中包装
this
。只需执行
此操作。每个(…)
实际上,我认为没有必要在插件中使用
.each()
循环以及
for循环。。您可以这样编写代码

$.fn.stars=函数(){
return/$(this).each(function(){
$(this.html($('').width(Math.max(0,(Math.min(5,parseFloat($(this.html())))))*16));
//});
}
$(函数(){
$('input[id^=“sa”]”)。在('click',函数(e){
e、 预防默认值();
var ThisIt=$(本);
ThisIt.next('[id^=“so”]').html(''+parseFloat(ThisIt.prev('input[name^=“amount”]')).val())+'');
ThisIt.next('[id^=“so”]').find('>span').stars();
})。单击();
});
span.stars,span.stars span{
显示:块;
背景:url(http://placehold.it/350x150)0-16px重复-x;
宽度:80px;
高度:16px;
}
星星{
背景位置:0;
}
萨杰德先生{
/*显示:无*/
}

2.4618164


2.4618164

我开始喜欢这个网站。。因为你一直在等我发布XD,这肯定很有效。谢谢你的帮助,我很感激。别忘了。谢谢你的关心。。那是一个很好的例子:))谢谢。