>  기사  >  웹 프론트엔드  >  Jquery 및 WebMethod 투표를 기반으로 한 코드 function_jquery

Jquery 및 WebMethod 투표를 기반으로 한 코드 function_jquery

WBOY
WBOY원래의
2016-05-16 18:11:32896검색
1: 기능 설명
1) 여러 개의 별표로 구성하는 것이 가장 좋습니다. 사용자는 별표를 마우스로 클릭하기만 하면 투표할 수 있습니다2) 투표 안 함, 투표 투표 완료 후 스타 스타일이 달라짐
3) 각 스타마다 '나쁨', '보통', '괜찮음', '좋음' 등의 프롬프트를 맞춤 설정할 수 있습니다
4) 투표가 완료되면 투표 결과가 애니메이션으로 표시되며 더 이상 투표는 허용되지 않습니다


2: 아이디어 설명
1, 3) 루프를 사용하면 최대값은 다음과 같습니다. 별 개수를 지정하고 각 루프 a> 문에 2) Jquery의 addClass 및 RemoveClass를 통해 이 메소드는 별의 스타일을 동적으로 조정할 수 있습니다. 점수를 매길 때 마우스가 한 번에 별 쪽으로 이동할 때 주목할 가치가 있습니다. 특정 위치에 있는 별의 스타일을 추가해야 합니다. Jquery의 prevAll()을 사용하여 현재 위치 이전의 별을 가져온 다음 add($(this))를 사용하여 현재 위치에 있는 별의 참조를 가져올 수 있습니다. .
채점 전:

UnScore 채점 중:

Scoreing채점 후:

beenScore4) 대상 영역 자식 노드에서 선택된 별의 위치 1을 기준으로 점수를 생성합니다. children().index($( this)) 그런 다음 점수는 ajax를 통해 서버와 상호 작용하여 반환됩니다. 그런 다음 대상 영역의 내용을 지우고 배경 이미지를 별 이미지로 설정한 후 가로 위치에 따라 조정할 수 있습니다. *평균 점수에 따라 의 최종 너비가 결정되며 animate를 사용하여 애니메이션 효과를 얻습니다.


3: 구현 코드
1) 자바스크립트 코드
편의상 세미 플러그인 형태로 만들었습니다. 그래도 AJAX 상호 작용을 위한 로직은 다음과 같습니다

코드 복사 코드는 다음과 같습니다.
(function ($) {
$.fn.Rate = function (options) {
options = options || {};
var StarTip = options.StarTip || ['볼 가치가 없음', '보통', '신뢰할 수 있는 정보', '매우 도움이 됨', '훌륭한 정보']; >var ItemAmount | ItemAmount | 5;
var UnRateClassName || 'star';
var RateClassName = 'star_on'; || 'OriginalState';
var PostURL = options.PostURL ||
var DoAfterPost = options.DoAfterPost || function ()
var userID || ;
var messageID = options .messageID ||
var content = $(this)
var starList = ''
for (var i = 0; i < ItemAmount; i ) {
starList = [''].join ('');
}
content.empty().append(starList).find('a').hover(function () {
$(this).prevAll().add( $(this)).addClass( RateClassName);
}, function () {
$(this).prevAll().add($(this)).removeClass(RateClassName)
}) .one('click', function () {
var Score =parseInt(content.children().index($(this))) 1;
$.ajax({
type: "POST ",
url: PostURL ,
data: "{messageID:" messageID ",userID:" userID ",Score:" 점수 "}",
contentType: "application/json; 8",
dataType: "json",
success: function (msg) {
var result = (jQuery.parseJSON(msg.d)).SuccessFlag;
DoAfterPost(result);
content.empty().removeClass();
$('').addClass(originalStateClassName).prependTo(content).animate({ 'width': 16 * 결과 'px', '불투명도': 1 }, '느림');
})

}); );


参数说明:

参数名称 描述 默认值 参数类型
StarTip 鼠标移到星星上的文本提示 ['不值一看', '平平无奇', '信息靠谱', '对我很有帮助', '极品信息'] javascript数组
[tip]:数组元素个数必须要和星星个数一致
ItemAmount 星星的个数 5 数字
UnRateClassName 还没投票时星星的样式名称 'star' 字符串
RateClassName 投票中,鼠标移过时星星的样式 'star_on' 字符串
originalStateClassName 投票完成后,结果展示时星星的样式 'OriginalState' 字符串
PostURL ajax交互时,url参数 '' 字符串
DoAfterPost 投票完成后,在投票页面使用自定义方法 '' 字符串
userID ajax交互时用户ID,防止重复投票 '' 数字
messageID ajax交互时文章ID '' 数字
2) 프론트엔드 참조 코드
코드 복사 코드는 다음과 같습니다.

$( '#왼쪽 테이블 tr :eq(1) td:eq(0) #StarRate').Rate({
PostURL: 'http://www.cnblogs.com/ServiceProvider/MessageInfoService.asmx/VoteMessage',
userID: UserID ,
messageID: messageID,
DoAfterPost: function (data) {
if (data > 0) {
$(voteResultContext).html(data); }
else {
ProcessNoticeShow('이미 투표하셨습니다');
}
}
})
}

4) 스타일 시트

코드 복사 코드는 다음과 같습니다.
.star{ height:16px; 16px; 부동:왼쪽; 배경:url(../images/star.gif) 반복 없음 0 0;}
.star_on{ 배경: url(../images/star.gif) 반복 없음 0 - 32px !important;}
.OriginalState{ 너비:0px;배경: url(../images/star.gif) 반복-x 0 -16px !important;opacity:0;height:16px; 디스플레이:블록;}

3) 서버측 코드

코드 복사 코드는 다음과 같습니다
/// < ;summary>
/// 메시지에 투표하세요. 0보다 큰 반환 값은 성공을 의미합니다.
/// /// < ;param name="messageID">메시지 ID< /param>
/// UserID/// Score
///
[WebMethod]
공개 문자열 VoteMessage(int messageID, int userID ,int Score)
{
SQLCMD = new SqlCommand("MessageInfo_Add_VoteUsefull_MessageIDUserID", SQLConnect);
SQLCMD.CommandType = CommandType.StoredProcedure;
SQLCMD.Parameters.Add(new SqlParameter("@messageID",SqlDbType.Int)); SQLCMD.Parameters["@messageID"].값 = messageID;
SQLCMD.Parameters.Add(new SqlParameter("@userID",SqlDbType.Int))
SQLCMD.Parameters["@userID"]. Value = userID;
SQLCMD.Parameters .Add(new SqlParameter("@Score", SqlDbType.Int))
SQLCMD.Parameters["@Score"].Value = Score
float SuccessFlag; basicSQLAccess.ExeScalarReturnValueFloat(SQLCMD);
Hashtable HTFlag = new Hashtable();
HTFlag.Add("SuccessFlag", SuccessFlag)
return JsonConvert.SerializeObject(HTFlag);

JsonConvert.SerializeObject 정보 프런트 엔드 Jquery와의 상호 작용 및 콘텐츠에 대한 소개는 이전 기사 을 참조하세요.
4:
다운로드 CSS, JS 및 별 이미지가 포함된 압축 패키지

다운로드하려면 클릭하세요
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.