I가 나의 JS 파일에 다음과 같은 구조 :이벤트 핸들러가 다시 렌더링 HTML 후 더 이상 작동하지 않습니다
$.getJSON("data/file.json")
.done(function(data) {
var loadHTMLfunction = /* some code */
loadHTMLfunction();
// updates display based on user filter selection
$("#select-section").on("change", function() {
$("article").find(".myClass").remove();
loadHTMLfunction();
});
// text swap event
$(".summary-link").on("click", function() {
var el = $(this),
tmp = el.text();
el.text(el.data("text-swap"));
el.data("text-swap", tmp);
});
})
.fail(function(jqxhr, textStatus, error) {
// error handling
});
내 문제 내 텍스트 스왑 이벤트는 페이지가 처음로드 될 때 잘 작동하지만, 사용자가 선택 이벤트를 사용한 후에는 더 이상 작동하지 않습니다 (이 이벤트는 표시를 업데이트하기위한 선택 HTML 요소 임).
내 js 파일 구조에 문제가 있거나 내 코드 (또는 둘 다!)에 문제가 있습니까?
감사합니다.
잘 모르겠지만, 내 생각 엔 당신이이기 위하여'click' 이벤트를 기대하고 있다는 것입니다 : 코드의 리팩토링 버전은 다음과 같이 표시 될 수 있습니다 아직 생성되지 않은 요소에 바인딩됩니다. 그럴 경우'click' 이벤트를 페이지로드와'loadHTMLfunction' 내부에서 실행되는 함수 안에 넣습니다. – PHPglue
1) 우리가 실제로 놀고있는 DOM 요소에 대해 더 많은 정보를 제공 할 수 있고 2) 'loadHTMLfunction()'이 무엇인지 보여줄 수 있다면 아래 답변을 추가로 개선 할 수 있습니다. 이 순간부터 좋은 답변을 얻는 데 필요한 정보가 충분하지 않습니다. – Xenyal
문제는 그가 click 이벤트를 한 번 ".summary-link"로 바인딩하지만 loadHTMLfunction 함수가 다시 호출되면 click 이벤트는 다시 바인딩되지 않는다는 것입니다. 내 대답 이벤트 바인딩에 배치 할 때 html을 만든 후 loadHTMLfunction에 있어야합니다. –