특정 div의 입력 필드에 대한 변경 사항을 추적하고 변경된 사항이있을 경우 이벤트를 트리거해야하는 경우가 있습니다.jquery 한 번에 여러 입력 필드에서 이벤트 바인딩 해제
내가
$('div.dc2-content:eq(1) input:not([aria-readonly])').each(function(){
var $elem = $(this);
$elem.data("oldval",$elem.val());
$elem.on("change",{ctx:this},setItemStatus);
});
이것은 잘 작동하지만, 요구 사항의 두 번째 부분은 이벤트가 한 번만 트리거해야한다는 것을 달성하기 위해 다음 코드를 사용하고 있습니다. 즉, 그 의미는
- 첫 번째 필드가 변경되면 이벤트가 트리거됩니다.
- 그런 다음
function setItemStatus(event){ var $el = $(this); if($el.val() != $el.data("oldval")){ console.log("Invoke Update Method"); //unbind the events so that it doesn't trigger the update twice. $('div.dc2-content:eq(1) input:not([aria-readonly])').each(function(){ var $elm = $(this); $elm.off("change"); }); } }
그러나 기능
다음 모든 입력 필드 내가 쓴이 부분에 대한
에서의 변화를 바인딩 해제이 변경 이벤트 내가 변화를 만들 경우 여전히 트리거하지 unbinded 후에도 양식의 다른 필드.
코드 실행을 중단 할 수있는 조건을 넣을 수 있지만 언 바인딩하고 싶습니다.
.unbind()를 시도해보십시오. .off() 대신. – NomNomNom
예, 작동하지 않았습니다. 문제는 함수의 selector가 입력 태그를 선택하지 않는다는 것입니다. 그것은 off 코드를 트리거하지 않습니다. 나는 바인딩에서 잘 작동하는 동일한 선택기를 사용하고 있습니다. – Neel