[javascript] jQuery에서 전역 값 (반드시 전역 변수 일 필요는 없음)을 저장하는 방법은 무엇입니까?

현재 저는 수많은 JavaScript, jQuery, Microsoft 클라이언트 JavaScript 및 기타 라이브러리를 사용하는 레거시 웹 페이지에서 작업하고 있습니다. 결론-비즈니스가 정당화 할 수 없기 때문에 전체 페이지를 처음부터 다시 작성할 수 없습니다. 그래서 … 그게 바로 그 거예요. 어쨌든, 변수로 전역 네임 스페이스를 오염시켜야합니다. 제가 생각했던 세 가지 옵션이 있습니다.

  1. 일반 JavaScript 선언을 사용하여 저장 / 검색하십시오. var x = 0;

  2. jQuery를 사용하여 DOM 태그에 값을 저장 / 검색- $("body").data("x", 0);

  3. 숨겨진 양식 필드를 사용하고 jQuery로 값을 설정 / 검색합니다. $("whatever").data("x", 0);

더 좋은 방법이 있습니까? 나는 기존의 코드 더미를 보았고 변수가 함수에서 범위가 지정 될 수 있다고 생각하지 않습니다.



답변

다음과 같이 jQuery 객체 내에 네임 스페이스를 만들 수 있습니다.

$.mynamespace = {
    myVar : "something",
    myVar2 : "somethingElse"
};

또는:

$.mynamespace = {};
$.mynamespace.myVar = "something";
$.mynamespace.myVar2 = "somethingElse";

‘mynamespace’라는 이름의 플러그인 메서드는 덮어 쓰여 지므로 적절한 이름을 사용하십시오.


답변

나에게이 상황을 처리하는 가장 좋은 방법은 창 개체에 개체를 정의하는 것입니다.

window.my_config =
{
    my_var1 : 1,
    my_var1 : 2,
    my_var1 : 3
};

이렇게하면 스코프가 깔끔하고 깨끗하게 유지됩니다. 그리고 window.my_config코드를 보는 사람을 사용하여 전역에 액세스 할 때마다 전역이 액세스되고 있음을 알 수 있습니다.


답변

전역 범위에 해시를 만들고 네임 스페이스로 사용할 수 있습니다.

MyNamepace={}
MyNamespace.newvar = 'value'
// MyNamespace.newvar => 'value'


답변

내 연습을 여러분과 공유하기 만하면이 개체가 텍스트 상자가 될 페이지에서 작업하는 것처럼 필요한 JavaScript 파일에 전역 개체 / var를 합리적인 접두사로 만들고 이름을 지정합니다.

g_TxtMyValue = 'value';    // g_ specifies it to be a global variable, it is one
                           // of the many conventions used

둘 이상의 전역 변수가있는 경우 다음과 같은 네임 스페이스도 가질 수 있습니다.

my_txt = {};  // For a real site I would use a prefix relative to the project
              // name instead of "my".

my_txt.testValueOne = 'Value one';
my_txt.testValueOne = 'Value two';

이러한 변수는 초기화 된 후 웹 사이트 전체에서 사용할 수 있습니다.

이게 도움이 되길 바란다.


답변

밑줄을 사용하십시오 isEmpty().

_.isEmpty('')반환 true됩니다.


답변

짧은 알림 :

fancybox가 AJAX를 수행하고 있습니까 (즉, iFrame 내에서로드되면 close 메소드에 “parent”를 추가해야 함). 다음과 같이 :

parent.$.fancybox.close();


답변