2013-03-07 1 views
0

dokuwiki 플러그인을 만들고 있는데 js가 요소 ID를 저장하는 방법에 대해 흥미로운 점을 발견했습니다. 나는 무슨 일이 일어나고 있는지 잘 모르겠어요 ... 그래서 여부를 결정하기 위해 사용 DokuWiki는 linkwiz.js 파일에서 코드를 ':'문자가 ID 문자열의 일부입니다 :jQuery form.id vs form.id.value

dw_linkwiz.textArea = $editor[0]; 

//some code between 

    // prepend colon inside namespaces for non namespace pages 
    if(dw_linkwiz.textArea.form.id.value.indexOf(':') != -1 && 
     link.indexOf(':') == -1){ 
     link = ':' + link; 
    } 

을 $ editor는 jQuery 객체입니다. element의 id를 얻으려면 form.id.value를 사용하지만 어떤 경우에는 jQuery .attr 메서드를 사용하여 동적으로 요소의 id를 설정할 때 form.id.value는 정의되지 않고 id 문자열은 간단하게 유지됩니다. form.id에. 왜 그렇게되는지 아십니까? 어느 것이 더 표준 편집인입니까?

+0

'dw_linkwiz.textArea'가 jQuery 객체 인 경우'.form'은'undefined'이어야합니다. –

+2

"name"속성이 "id"인 해당 필드가 있습니까? 그게 나에게 의미가 될 것입니다, 그리고 그것은'form.id.value'가 "id"라는 이름의 입력 필드의 "value"프라퍼티를 가져 오는 것을 의미합니다. – Pointy

+1

@ExplosionPills는 jQuery 객체가 참조 해제되었다는 것에주의하십시오.'[0]' – Pointy

답변

0

일반적으로 DOM 요소 ID는 문자열이 아니고 객체가 아니므로 form.idid 값을 갖는 문자열입니다. 값이있는 객체 여서는 안됩니다. 이 플러그인은 value 속성을 포함하지만 표준 DOM 요소가 아닌 id 속성을 가진 다른 객체를 정의했을 수 있습니다.

0

이 경우 id는 요소의 id 속성이 아니라 양식의 "id"라는 필드입니다.

그것은 다음과 같습니다 간체 :

<form> 
<input name="id" value="some:page"> 
<textarea>the editor</textarea> 
</form> 

dw_linkwiz.textArea이 텍스트 영역의 DOM 객체입니다. dw_linkwiz.textArea.form.id.value은 "some : page"입니다.