第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

求源碼!我想改把它改成用原生 js 來(lái)實(shí)現(xiàn)。

求源碼!我想改把它改成用原生 js 來(lái)實(shí)現(xiàn),目前項(xiàng)目中沒(méi)有用到 jq,不想為了個(gè)星星而引入一個(gè) jQuery。。。。。

正在回答

5 回答

https://typescript-zjhw7c.stackblitz.io

0 回復(fù) 有任何疑惑可以回復(fù)我~

TypeScript代碼可以嗎?

/**
*?星級(jí)評(píng)分條類
*
*?@class?RatingBar
*/
class?RatingBar
{
/**
????*?默認(rèn)設(shè)置
????*
????*?@static
????*?@memberof?RatingBar
????*/
public?static?readonly?defaults?=?{
mode:?"LightEntire",
maxStar:?5,
star:?0,
OnSelect:?()?=>?{?},
OnChosen:?()?=>?{?},
};
public?readonly?mode?=?{
"LightEntire":?this.LightEntire,
"LightHalf":?this.LightHalf,
}
el:?JQuery<HTMLElement>;
options:?{
mode?:?string,?maxStar?:?number,?star?:?number,?OnSelect?:?()?=>?void,?OnChosen?:?()?=>?void,
};
constructor(el:?JQuery<HTMLElement>,?options:?{?mode?:?string,?maxStar?:?number,?star?:?number,?OnSelect?:?()?=>?void,?OnChosen?:?()?=>?void,?})
{
options?=?$.extend({},?RatingBar.defaults,?options);
options.mode?=?(!this.mode[options.mode])???"LightEntire"?:?options.mode;
options.mode?=?(options.star?!=?Math.floor(options.star))???"LightHalf"?:?options.mode;
this.el?=?el;
this.options?=?options;
//初始化星星顯示
this.LightHalf(options.star);
//綁定事件
this.BindEvent();
}
/**
????*?綁定事件
????*
????*?@memberof?RatingBar
????*/
public?BindEvent()
{
this.el.on("mousemove",?".rating_item",?(e)?=>
{
this.OnMouseMove(e);
});
this.el.on("click",?".rating_item",?(e)?=>
{
this.OnClick(e);
});
this.el.on("mouseout",?".rating_item",?(e)?=>
{
this.OnMouseOut(e);
});
}
/**
????*?清除綁定事件
????*
????*?@memberof?RatingBar
????*/
public?UnbindEvent()
{
this.el.off("mousemove");
this.el.off("click");
this.el.off("mouseout");
}
/**
????*?點(diǎn)亮整顆星星
????*
????*?@param?{number}?num?要點(diǎn)亮的星星數(shù)目
????*?@memberof?RatingBar
????*/
public?LightEntire(num:?number)
{
num?=?Math.floor(num);?//防止傳入的數(shù)不是整數(shù)
let?item?=?this.el.find(".rating_item");
item.each(function(i)
{
item.eq(i).removeClass("show_half");?//清除半顆星
if?(i?<?num)
{
item.eq(i).addClass("show_entire");
}
else
{
item.eq(i).removeClass("show_entire");
}
});
}
/**
????*?點(diǎn)亮半顆星星
????*
????*?@param?{number}?num?要點(diǎn)亮的星星數(shù)目
????*?@memberof?RatingBar
????*/
public?LightHalf(num:?number)
{
let?count:?number?=?Math.floor(num);
let?isHalf:?boolean?=?count?!==?num;?//是否選擇半顆
let?item?=?this.el.find(".rating_item");
item.each((i)?=>
{
this.LightEntire(count);
if?(isHalf)
{
item.eq(count).addClass("show_half");
}
});
}
private?OnMouseMove(e:?JQuery.MouseMoveEvent<HTMLElement,?undefined,?any,?any>)
{
let?$self?=?$(e.currentTarget);
let?num:?number;
if?(e.pageX?-?$self.offset().left?<?$self.width()?/?2?&&?this.options.mode?==?"LightHalf")?//半顆
{
num?=?$self.index()?+?0.5;
}
else?//整顆
{
num?=?$self.index()?+?1;
}
this.LightHalf(num);
this.options.OnSelect();
}
private?OnClick(e:?JQuery.ClickEvent<HTMLElement,?undefined,?any,?any>)
{
let?$self?=?$(e.currentTarget);
let?num:?number;
if?(e.pageX?-?$self.offset().left?<?$self.width()?/?2?&&?this.options.mode?==?"LightHalf")?//半顆
{
num?=?$self.index()?+?0.5;
}
else?//整顆
{
num?=?$self.index()?+?1;
}
this.options.star?=?num;
this.options.OnChosen();
}
private?OnMouseOut(e:?JQuery.MouseOutEvent<HTMLElement,?undefined,?any,?any>)
{
this.LightHalf(this.options.star);
}
}
let?r1?=?new?RatingBar($("#r1"),?{
OnSelect:?()?=>
{
console.log("select");
},
OnChosen:?()?=>
{
r1.UnbindEvent();
}
});


0 回復(fù) 有任何疑惑可以回復(fù)我~

jq也就那么幾句,自己改一改唄

0 回復(fù) 有任何疑惑可以回復(fù)我~

自己寫吧,思路都有了,差別不是太大。

0 回復(fù) 有任何疑惑可以回復(fù)我~

沒(méi)有源碼 手打的可以嗎 功能都實(shí)現(xiàn)了

1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

求源碼!我想改把它改成用原生 js 來(lái)實(shí)現(xiàn)。

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)