2011-04-05 7 views
1

here의 jQuery 별 등급 플러그인을 사용하고 있습니다. 그러나 페이지로드시 11 회 호출되는 함수가 있습니다! 이 함수는 등급이 제출 될 때 (예 : 별표를 클릭 할 때)에만 호출되어야합니다. 페이지로드에서 호출되는 것을 막을 수있는 방법이 있습니까? ,페이지로드시 여러 번 호출되는 jQuery 함수 방지

$(".auto-submit-star").rating({ 
     callback: function (value, link) { 
      $.getJSON('/Handlers/RatingHandler.ashx?productId=' + pid + '&productScore=' + value, function (data) { postRatingUpdate(data); }); 
     } 
    }); 

내가 어떤 확신을 가지고 플러그인의 JS 파일에 파고 라운드 갈 수있는 충분한 자바 스크립트를 모르는 :

이 (문서) 내 JS 파일에 .ready이 $에있는 기능입니다 무대 뒤에서 무슨 일이 일어나는지 확실하지 않습니다.

은 등급 별을 렌더링하는 HTML입니다 :

<input class="auto-submit-star" type="radio" name="product-rating" value="1" /> 
<input class="auto-submit-star" type="radio" name="product-rating" value="2"/> 
<input class="auto-submit-star" type="radio" name="product-rating" value="3"/> 
<input class="auto-submit-star" type="radio" name="product-rating" value="4"/> 
<input class="auto-submit-star" type="radio" name="product-rating" value="5"/> 

UPDATE : 언급 된 일부 수정을 시도 후, 나는이 평가 방법은 여러 번 호출 점점되지 않았 음을 깨달았다하지만, 그 안에 콜백이 있었고, 이것이 내 getJSON 호출을 포함하기 때문에 여러 번 호출되었습니다. 다중 콜백이 필요하다고 생각합니다. 라디오 버튼을 별로 변환하십시오.

해결책은 getJSON 호출을 별도의 기능으로 이동하고 플러그인의 js 파일에서 OnClick을 별 뒤에 html에 추가하는 것이 었습니다.

+0

div 단위로 중첩되어 있습니까? 당신은 시도 했습니까 [this] (http://api.jquery.com/event.stopPropagation/) – tjameson

+0

"rating"방법은 어디서 오는 것입니까? 그것은 아마 문제가있는 곳일 것입니다. –

+0

@Mike 플러그인에서 왔습니다. – eagerMoose

답변

0
var stopMe = false; 
if(!stopMe) { 
stopMe = true 
$(".auto-submit-star").rating({ 
     callback: function (value, link) { 
      $.getJSON('/Handlers/RatingHandler.ashx?productId=' + pid + '&productScore=' + value, function (data) { postRatingUpdate(data);}); 
     } 
    }); 
} 
1

등급이 onload 인 경우. 라디오가 클릭되었을 때만 호출되어야하는 방법이라고 평가됩니다.

$(".auto-submit-star").change(function(){ 
$(this).rating({ 
    callback: function (value, link) { 
     $.getJSON('/Handlers/RatingHandler.ashx?productId=' + pid + '&productScore=' + value, function (data) { postRatingUpdate(data); }); 
    } 
});}); 
관련 문제