私は 5 つの星をレンダリングする次の jQuery を持っています。RadPopupWindow (Telerik) に格納されています。あるページからクリックしてこのポップアップとコードを受け取ると、すべてが期待どおりに機能します。別のページから、ユーザーの投票と「私の投票を削除する」というリンクが一瞬表示され、その後消えます。つまり、半分は機能し、半分は機能しません。
<script type="text/javascript">
$(document).ready(function () {
//if they've already voted, show the stars
var nbrStarsVoted = $('#<%= hdfStarRating.ClientID %>').val();
if (nbrStarsVoted > 0) {
$('#removeVote').text('Remove my vote');
//show stars, then addClass jQuery-ratings-full to light up the right amount of stars
$('#starRating div:lt(' + nbrStarsVoted + ')').addClass('jquery-ratings-full');
}
//add correct class to star they've clicked on, and the ones before it
$('.jquery-ratings-star').click(function () {
$(this)
.prevAll().addBack().addClass('jquery-ratings-full').end().end()
.nextAll().removeClass('jquery-ratings-full');
//make (this) be what's stored in the hiddenfield for postback (casting the vote)
$('#<%= hdfStarRating.ClientID %>').val(this.id);
});
//remove their vote
$('#removeVote').click(function () {
$('#starRating div:lt(' + nbrStarsVoted + ')').removeClass('jquery-ratings-full');
$('#removeVote').hide();
$('#<%= hdfStarRating.ClientID %>').val(0);
});
});
</script>
そして、ここに HTML と CSS があります。jsFiddle、Codepen でテストしましたが、すべてうまく機能します。あるページから次のページまではそうではありません。何か案は?
<div style="float: left" id="starRating">
<div class="jquery-ratings-star" id="1"></div>
<div class="jquery-ratings-star" id="3"></div>
<div class="jquery-ratings-star" id="4"></div>
<div class="jquery-ratings-star" id="5"></div>
</div>
CSS:
<style type="text/css">
.jquery-ratings-star {
width: 16px;
height: 16px;
background-image: url('/../ESDNET/Images/Icons/star_disabled.png');
background-repeat: no-repeat;
position: relative;
float: left;
margin-right: 2px;
}
.jquery-ratings-full {
background-image: url('/../ESDNET/Images/Icons/star.png');
}
</style>
ポップアップ ページに RadScriptManager があり、サイト全体に Telerik があることを指摘しておく必要があります。どうやら私が最初にやって来て、jQuery をミックスに投入しようとしたのですが、まったくうまくいきません。