find('.lesson')
은 모든 링크가 #ListContainer
안에 있기 때문에 모든 데이터가 저장됩니다. 나는 당신의 인라인 이벤트 핸들러를 제거하고 on
방법으로 이벤트 위임을 활용 제안 : 나는 attr
대신 data
방법을 사용했습니다
$("#ListContainer").on("click", ".lesson", function() {
localStorage["LessonID"] = $(this).data("lessonid");
localStorage["SubjectName"] = $(this).data("subject");
});
공지 사항.
<a href="Page.htm" rel="external" class="lesson" data-lessonid="someID" data-subject="someSubject">
이 HTML5에게이 요소에 임의의 데이터를 저장하기에 올 때 권장되는 방법입니다 data-*
속성을 사용합니다 : 그것은 당신의 마크 업에 또 다른 변화가 필요합니다.
왜 이벤트 위임을 사용합니까? 요소에 바인딩 된 이벤트 핸들러가 적어 지므로 더 효율적입니다. 모든 a.lesson
요소에 하나가 아니라 #ListContainer
요소에 하나만 있습니다.
대부분의 DOM 이벤트가 트리를 버블 링하기 때문에 #ListContainer
의 자손 클릭이 DOM 트리를 통해 위로 튀어 나와 결국 #ListContainer
에 도달합니다. jQuery on
메소드는이 요소에서 이벤트를 선택하고 .lesson
과 일치하는 요소에서 발생했는지 확인합니다. 그렇다면 이벤트 처리기를 실행합니다.
정말 도움이됩니다. 감사합니다. –
@SanaJoseph - 도와 줘서 다행이다. :) –