2011-11-08 7 views
0

팁이있는 플러그인의 대체 버전을 업데이트하려면이 코드를 사용하십시오. 변수 의 첫 번째 기능 외부 변수에 어떻게 액세스합니까? 변수를 재정 의하여 업데이트 할 수 있습니까? 맞습니까?변수가 정의되지 않았습니다.

<script type="text/javascript"> 
$(document).ready(function() { 
    var a ="Login"; 
    $("#login_form").submit(function() { 
     var formdata = $("#login_form").serializeArray(); 
     $.ajax({ 
      url: "ajax_login.php", 
      type: "post", 
      dataType: "json", 
      data: formdata, 
      success: function (data) { 
       if (data.livre === 'complete') { 
        var a ="success"; 
       } else 
        var a = "Error"; 
      } 
     }); 
return false; 
    }); 
}); 
</script> 

<script type='text/javascript'> 
$(document).ready(function() { 
    $('.login_fields input[rel=tipsy]').tipsy({gravity: 'w', trigger: 'manual', fallback: a }); // a is not defined 
}); 
</script> 

답변

1

고객님의 Tipsy 개체가 tipsy plugin 자체를 해킹하지 않고 생성 된 후에 fallback 속성을 변경할 수 없습니다.

fallback 매개 변수가 문자열 인 경우 $().tipsy({...}) 함수가 실행 되 자마자 해석됩니다. 변수 a의 값을 나중에 변경하면 fallback 매개 변수가 변경되지 않습니다.

은 내가 먼저 직접 $.fn.tipsy.defaults 개체에서 fallback 속성을 업데이트하는 그것을 만들 것이라고 생각하지만, 새로운 Tipsy 객체가 생성 될 때 영원히 fallback의 초기 값을 저장합니다 있도록 fallback 속성은 기본적으로 그 안에 복사됩니다.

한 가지 해결책은 Tipsy 프로젝트를 포크하고 fallback 속성을 변경하여 문자열 또는 function()을 수락하는 것입니다. 이렇게하면 다음과 같이 할 수 있습니다 : fallback: function(){ return a;}.

+0

나는 동적 인 내용 및 퇴색을 가진 간단한 CSS 툴팁을 만들 것이다. 그것을 간단하게 유지하고 해결하십시오. 감사 – Daniel

0
은 준비 기능을 외부 a 변수를 이동

:

또한
<script type="text/javascript"> 
    var a ="Login"; 
    $(document).ready(function() { 

, 당신의 성공 함수에서 var 키워드를 사용하지 마십시오. 준비 함수의 시작 부분에 정의 된 변수의 값을 설정하는 대신 변수를 다시 선언하고 있습니다.

success: function (data) { 
      if (data.livre === 'complete') { 
       a ="sucess"; 
      } else 
       a = "Error"; 
     } 
0

세계로 만들 수 있습니다. 그게 당신이 이어야하는지 여부는일까요?

모든 것이 doc 준비 상태로 실행 중이면 전역을 가질 이유가 없습니다. 당신은 ajax 성공에서 두 번째 docready의 코드를 실행할 수 있습니다 (또는 필요에 따라 완료).

어려운 말; 스 니펫이 얼마나 가까이에 있는지를 모릅니다.

3

두 번째 document.ready 블록의 코드를 a 변수에 a 변수로 액세스 할 수있게하거나 변수로 액세스 할 수있게하거나 a 변수를 전역으로 설정하십시오.

<script type="text/javascript"> 
$(document).ready(function() { 
    var a ="Login"; 
    $("#login_form").submit(function() { 
     var formdata = $("#login_form").serializeArray(); 
     $.ajax({ 
      url: "ajax_login.php", 
      type: "post", 
      dataType: "json", 
      data: formdata, 
      success: function (data) { 
       if (data.livre === 'complete') { 
        a ="success"; 
       } else 
        a = "Error"; 
      } 
     }); 
return false; 
    }); 
    $('.login_fields input[rel=tipsy]').tipsy({gravity: 'w', trigger: 'manual', fallback: a }); 

}); 
</script> 

또는

<script type="text/javascript"> 
var a = "Login"; 
$(document).ready(function() { 
    $("#login_form").submit(function() { 
     var formdata = $("#login_form").serializeArray(); 
     $.ajax({ 
      url: "ajax_login.php", 
      type: "post", 
      dataType: "json", 
      data: formdata, 
      success: function (data) { 
       if (data.livre === 'complete') { 
        a ="success"; 
       } else 
        a = "Error"; 
      } 
     }); 
return false; 
    }); 
}); 
</script> 

<script type='text/javascript'> 
$(document).ready(function() { 
    $('.login_fields input[rel=tipsy]').tipsy({gravity: 'w', trigger: 'manual', fallback: a }); // a is not defined 
}); 
</script> 

공지 사항 난 당신의 AJAX 호출에 성공 콜백에서 var 선언을 제거했습니다.

UPDATE는

당신이 당신의 콜백 함수에서 .tipsy() 전화를 실행해야합니다 기운을 a의 업데이트 된 값을 전달합니다. 당신은 또한 당신이 지금으로 실행하고 (필자는 플러그인에 익숙하지 않은 오전이 작업을 수행하는 방법을 인식하지 오전하지만) 콜백 함수의 기운 플러그인을 업데이트 할 수 있습니다 :

<script type="text/javascript"> 
$(document).ready(function() { 
    var a ="Login"; 
    $("#login_form").submit(function() { 
     var formdata = $("#login_form").serializeArray(); 
     $.ajax({ 
      url: "ajax_login.php", 
      type: "post", 
      dataType: "json", 
      data: formdata, 
      success: function (data) { 
       if (data.livre === 'complete') { 
        a ="success"; 
       } else { 
        a = "Error"; 
       } 
       $('.login_fields input[rel=tipsy]').tipsy({gravity: 'w', trigger: 'manual', fallback: a }); 
      } 
     }); 
return false; 
    }); 
}); 
</script> 
+0

은 오류를 해결하지만 툴팁은 업데이트되지 않습니다. 항상 "로그인"이며 성공 또는 오류로 변경되지 않습니다. – Daniel

+0

AJAX 호출은 비동기식입니다. 즉,'.tipsy()'호출이 이루어진 후에 콜백 함수를 실행합니다. 위의 변경 사항을 체크 아웃하여 콜백 함수에로드하십시오. 또 다른 해결책은 tispy를로드하는 것이지만 콜백 함수에서 업데이트하는 것입니다 (플러그인을 개인적으로 모르기 때문에이 작업을 수행하는 방법을 모르겠습니다). – Jasper

0

1) 왜 당신을 2 Document.ready을 가지고 ??

2) 글로벌 param 또는 $ .data를 사용하여 데이터를 전송할 수 있습니다.

3) 해결 방법 - var a ="Login";을 선언하거나 전역 변수의 범위를 유지하는 자체 실행 func을 사용하십시오.

관련 문제