백본을 사용하고 있으며 바인딩 된 HTML 요소와 그렇지 않은 HTML 요소를 구별하는 방법을 원한다고 결정했습니다.jQuery에서 모든 선택자에 [name = X]를 사용하는 것은 나쁜 생각입니까?
그래서 (HAML에) 작성합니다
.container
.title(name='title')
.separator
을 당신이 동적 요소는 제목입니다 분명하다 볼 수 있듯이.
이유는 스타일을 바꾸고 클래스 이름을 변경하고 앱을 깨뜨리지 않아도된다는 것입니다. 또한 템플릿에서 백본보기로 앞뒤로 이동할 필요없이 동적 요소가 무엇인지 알 수 있습니다.
코드에서이 요소를 참조하려면 $('[name=title]', this.el)
을 사용합니다. 나는 이것이 느리고 모든 곳에서 사용된다면 눈에 띄는 문제가 될지 궁금합니다. 나는 id
이 가장 빠릅니다. id
이 비현실적인 항목 목록을 사용하고 있습니다. class
은 (는) name
과 어떻게 다릅니 까?
또한 HTML 템플릿의 동적 요소를 추적하는 방법에 대한 제안이 있으면 듣고 싶습니다. 참고로
:
내가 원래 동적 요소에 대한
data-bind
속성을 사용 Backbone.ModelBinding 플러그인을 사용했기 때문에 나는 아이디어를 얻었으나, 지금은 그것에서 멀리 이동하고있다.저는 CoffeeScript, Backbone 및 haml_ 커피 템플릿을 사용하고 있습니다.
또한
$(this.el).find('[name=title]')
은 선택기에 컨텍스트를 제공하는 것보다 빠릅니다.
후속 질문 :
A convention for indicating whether an HTML element is referenced from JS code
업데이트 jsperf 모든 제안을 테스트합니다 :
http://jsperf.com/class-or-name-attr-lookup/3
감사합니다. 좋은 대답! '클래스 w/scope' 대'named w/scope' 테스트는 꽤 설득력이 있습니다. 나는 문서의 크기가 작아서'클래스 승/클래스 '가 승리 할 것으로 생각합니다. ID 대 클래스도 재미 있습니다. ID 선택기 만 사용하면 사용자가 인식 할 수있는 속도가 빨라지는지 궁금합니다. 내 현재 개발 워크 플로우에서 실제로는 가능하지 않지만 어쩌면 Google Closure와 같은 자바 스크립트 컴파일러로도 가능할 수 있습니다. – vaughan