2009-11-10 5 views
0

DotNetNuke 프로젝트에서 jqDock으로 작업하고 있습니다. jQuery.noConflict()를 실행하고 jqDock.js 파일을 검토하여 '$'를 'jQuery'로 변경했습니다 (필자는 생각하지 않지만). 내 발견/jQuery를로 설정 교체 $/i을 말한다 덩어리가 정규 표현식의 끝에서Javascript/jQuery 정규식 코드 문제

altImage : function(){ 
     var alt = jQuery(this).attr('alt'); 
     return (alt && alt.match(/\.(gif|jpg|jpeg|png)$/i)) ? alt : false; 

    } //end function altImage() 

: 코드의이 조금에서 나는 문제가있다. 그것은 프로그램을 어겼습니다. 이것이 '$'기호가 jQuery와 관련이 없기 때문입니까? 정규 표현식의 일부입니까? 그렇다면 ... 정확히 뭐라고 말하는거야?

답변

1

jQuery 플러그인을 작성하는 일반적인 스타일은 플러그인 전체에서 $을 바꿀 필요가 없다는 것을 의미합니다. 대부분 플러그인은 플러그인 코드가 $에 대해 jQuery에 전달되는 자체 호출 익명 함수로 둘러 쌓여서 $이 그 함수 내부의 jQuery 객체를 참조하도록 작성됩니다. 좋아요.

(function($) { 

    // I can happily use $ here to refer to the jQuery object 
    $.fn.myFunction .... 

})(jQuery); 

순진한 찾기/바꾸기를 할 때는주의하십시오.

정규 표현식의 컨텍스트에서 다른 언급이 있으므로 $을 사용하여 문자열의 끝에 일치시킵니다.

마지막으로 $.noConflict()을 사용할 때 jQuery 개체를 다른 별칭에 할당하고 그 별칭을 후속 코드에서 사용할 수 있습니다. 예 :

var $j = $.noConflict(); 

// can use $j alias for jquery now 
$j(document).ready(function($) { 
    // can use $j or $ for jQuery object inside this function as the 
    // jQuery object is passed in 
}); 
2

$은 문자열의 끝과 일치하므로 여기서는 jQuery와 관련이 없습니다. 당신은 문제가 있었다 그 이유는 그래서

정규 표현식의 일부 독서, here

3

이 경우 $ 기호는하지 jQuery를에 대한 호출로, 정규 표현식의 일부로 사용을 찾을 수 있습니다. 정규 표현식이 수행되는 문자열의 끝과 일치합니다.

1

코드에서 이와 같이 거대한 찾기/바꾸기를 할 때는을주의해야합니다. 정규 표현식에 사용 된 $ 부호를 jQuery 표현식으로 변경했는데 잘못되었습니다. 이 모든 크기의 모든 replace (문서의 모든 것을 다른 문자열로 대체)을 현명하게 수행해야합니다.

noConflict documentation을 사용하면 어떤 옵션을 사용하고 있는지 확인할 수 있습니다. 심지어 jQuery에 $을 사용하게 할 수도 있습니다.