2008-11-15 2 views
1

jQuery를 탐색하면서 다음과 같은 이상한 스크립트를 생각해 냈습니다. 나는 정말로 JavaScript를 사용하여 변수 이름을 얻는 문자열을 연결하는 것이 JavaScript에서는 드문 일이 아니라고 생각합니다.jquery 선택기에서 문자열 연결 또는 jQuery를 사용하면 부작용이 있습니까?

의견 환영.

... 
    <script type="text/javascript"> 
     var a = 'y'; 
     $(document).ready(function() { 
      $('p[id^=' + $('p[id=x]').html() + a + "]").css('color','blue'); 
     }); 
    </script> 
... 

<p id="x">2a</p> 
<p id="2ay_">mytext</p> 
+1

Naw, 코드를 주석으로 작성하십시오. 암호화 된 JS를 작성하는 것은 쉽습니다. – CVertex

+0

숫자로 시작하는 DOM ID에주의하십시오! – Funka

답변

2

짧은 대답은 아니오, 부작용이 없습니다. 당신의 예는 기발한 것이지만, 당신이 말한대로 당신은 당신이 할 수있는 것을보기 위해 탐험하고있었습니다. 이전에는 jQuery 선택기에서 문자열 연결 및 함수 값 반환을 사용했지만 DOM의 다른 부분에있는 관련 요소 집합을 관리하는 데 유용한 기술이 될 수 있습니다.

셀렉터 내부에 jQuery.html()을 사용하지 않았지만 "나쁨"이라는 고유 한 이유는 없습니다. 나는 그것이 엄격히 필요한 상황을 생각할 수 없다. 그것은 오히려 코드를 ... 이상하고, 따라서 이해하고 유지하기가 더 어렵습니다.

실제로 프로덕션 코드에서이 용도로 사용하는 경우 저희에게 알려주십시오. 나는 그것이 무엇인지 알기 위해 매료 될 것입니다. :)

+0

jQuery에서 선택자 안에 원치 않는 부작용을 줄 수있는 검은 마법에 대해 궁금합니다. 내가 필요로하는 것은 런타임시 선택기에 '검색'문자열을 전달하는 것입니다. 그건 그렇고, jQuery는이 패턴을 가지고 있습니다 : $ ('p [id =?]'). (paramValue, function() {})을 클릭하십시오; ? – Florin

0

내 의견으로는 읽을 수없고 유지할 수없는 ... 그와 같은 것은 피해야합니다. 당신이 새로운 회사에 가입했다는 것을 상상해보십시오. 그런 모습의 js/jquery 코드 전체를 여러분 앞에 놓았습니다 !!

P.S 색상을 변경하려면 addClass를 사용해야합니다. 차라리 CSS 클래스를 변경하는 것은 스타일 설정이고 더 이상 js 코드없이 다른 스타일을 추가 할 수 있다는 점에서 더 확장 가능합니다.

0

아니요, 전혀 이상하지 않습니다. 누군가/당신이 p 요소 내에서 HTML을 수정 한 경우 원치 않는 결과가 아닌 것입니다. 코드화 된 방식은 확실히 이상합니다. 그러나 읽을 수 없거나 유지할 수없는 것 이외의 다른 것은 아닙니다.

jQuery는 특별한 것이 없기 때문에 자바 스크립트 라이브러리 일뿐입니다. 특수 JS 구문이나 다른 것을 사용하지 않고 jQuery는 단순히 문자열을 가져 와서 선택기로 사용합니다. 그 문자열은 여러분이보기에 어떤 방식 으로든 구성 할 수 있습니다.

0

jQuery에서 선택기 안에 원치 않는 부작용을 줄 수있는 검은 마법에 대해 궁금합니다. 내가 필요로하는 것은 런타임시 선택기에 '검색'문자열을 전달하는 것입니다. . ('[? ID =] P')를

을 $ (paramValue, 함수() {})을 클릭;

그렇고 JQuery와이 패턴으로 할 수 여기서 paramValue는 플레이스 홀더 '?'를 대체합니다. ?

0

넌 이런 짓을 할 수 없어. $은 실제로 함수 호출 자체이므로 매개 변수를 전달하기 위해 평가해야하는 모든 것이 먼저 평가됩니다.

관련 문제