2012-02-26 2 views
0

를 설정하지JQuery와 변수 내가이 jQuery 코드를 내 문서의 상단 부분에서

jQuery.ajax({ 
      url: frm.attr('action'), //your server side script 
      data: frm.serialize(), //our data 
      type: 'POST', 
      success: function (data) { 
      alert(position.left); 
      }, 

문제가있는 경고 상자가 위치와 함께 표시되지 않습니다. 내가 alert('something');와 함께 테스트하고 잘 작동합니다.

내 실제 아약스 전화 : 클릭 기능에

jQuery.ajax({ 
    url: frm.attr('action'), //your server side script 
    data: frm.serialize(), //our data 
    type: 'POST', 
    success: function (data) { 
    $('.warning').fadeIn(500).css({display: 'block', 
     position: 'absolute', 
     left: position.left + 50, 
     top: position.top - 25 
    }).append('asdasdsadsad'), 
    $(ri).next('.ratingcount').html('asdasdasd') 
    }, 
    error: function (jxhr, msg, err) { 
     alert(msg); //something went wrong. 
    } 
}); 

답변

1

position은 클릭 이벤트 처리기로 사용되는 익명 함수 안에 선언하십시오. 즉, 경고를 할 때 범위에 있지 않음을 의미합니다 (참조 오류가 발생 함).

당신은 이벤트 핸들러 함수의 position 외부 선언해야합니다

: 클릭 이벤트 처리기가 때 alert 실행을 실행하지 않은 경우 position 것 때문에, 그러나

var position; 
$('.rateit').click(function(){ 
    position = $(this).position(); 
}); 

, 당신은 여전히 ​​오류가 발생합니다을 undefined이어야하며 따라서 left 속성을 가지지 않습니다.

+0

여전히 위치는 아약스 호출에서 설정되지 않습니다. –

+0

나는 진짜 아약스 전화로 내 질문을 업데이트했다. 위치가 div 경고로 설정되지 않았습니다. –

+0

@Railsbeginner 사용자의 이벤트 (요소를 클릭)에 대한 응답으로 'position' 변수가 설정되고 코드가로드되는 즉시 AJAX 호출이 시작됩니다. –

3

는, 위치는 지역 변수이기 때문에 만이 범위에 표시됩니다.

이 시도 : 나는 당신의 변수가 $ 내부에 정의되어 있기 때문에

var position; 

$('.rateit').click(function(){ 
    position = $(this).position(); 
}); 
+0

전체 아약스 호출로 내 질문을 업데이트했습니다. 위치가 경고 div로 설정되지 않았습니다. –

+0

이 아약스를 호출 할 때? 클릭이 아니라 Ajax 호출 전에 위치를 설정해야합니다. –

+0

또는 '.rate'요소를 클릭하면 ajax 함수를 호출 할 수 있습니다. –

0

클릭(); ('rateit를.'). 시도해보십시오 :

var position; 

$('.rateit').click(function(){ 
position = $(this).position(); 
}); 
관련 문제