2013-12-11 2 views
0

jQuery로 조작 할 때 너무 긴 ID가 렌더링되는 경우가 있으므로 변수를 만드는 것이 좋습니다.와일드 카드로 변수를 연결하는 JQuery

그래서 예를 들어 내가있는 경우 : 위의 코드에서

if (!$(e.target).is('#some--wickedly-absurd-long-form-id-name-on-this-page, 
#some--wickedly-absurd-long-form-id-name-on-this-page *')) { ... 

, 나는 요소 다음 와일드 카드와 그 아래 요소와 어떤 이름을 지정합니다.

그건별로 이상하지 않습니다. 따라서 변수를 다음과 같이 작성합니다.

var showhideWrapper = $("#some--wickedly-absurd-long-form-id-name-on-this-page"); 

위의 ID 이름을 사용하여 동일한 작업을 시도했지만 작동하지 않습니다.

if (!$(e.target).is(showhideWrapper, showhideWrapper *)) { ... 

나는 다양한 조합

if (!$(e.target).is(showhideWrapper, showhideWrapper + '*')) { ... 

을 시도 ...하지만 난 정말이 일을 얻기 위해 여기에 미묘한 차이를 모른다.

답변

2

당신이 뭔가를 할 수 있습니다 :

if (!showhideWrapper.find(e.target).length) { 

는 (사실, 즉 완벽하게 일치하지 않는, 그것은 showhideWrapper 자체를 테스트하지 않기 때문에 포인트하지만, 당신이 탐색 기능을 사용할 필요가있다. 객체를 문자열과 연결하여 유용한 선택자를 얻을 수는 없습니다.)

하지만 아마 다른 길을 갈 것이며,이 이벤트는 특정 요소 내에서 발생 여부를 확인하기 위해 일반적으로 표준 방법입니다 :이 마법처럼 작동

if(!$(e.target).closest(showhideWrapper).length) { 
+0

아주 재미있는, 감사합니다. 나는 두 번째 것을 좋아한다. –