지금있는 Flash 앱을 대체 할 기존 페이지의 작은 앱을 개발하는 작업이 할당되었습니다.jQuery가 기존 앱의 requirejs로 재정의했습니다
requirejs, knockout 및 jquery를 사용하여이 앱을 개발했지만 설치 프로그램을 사용할 때 앱의 일부 텍스트 영역에 등록 된 모든 변경 이벤트가 등록 취소 된 것처럼 보입니다. 동작은이 간단한 html 파일로 설명 될 수있다 :
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#container .input").change(function() {
console.log($(this).val());
});
console.log($("#input").data("events"));
});
</script>
<script src="http://requirejs.org/docs/release/2.1.6/comments/require.js"></script>
<script>
require.config({
paths: {
jquery: "http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min",
},
shim: {
jquery: {
exports: "$"
}
}
});
require(
["jquery"],
function($) {
console.log("starting");
console.log($("#input").data("events"));
}
);
</script>
</head>
<body>
<div id="container">
<input type="text" id="input" class="input" />
</div>
</body>
이 코드는 첫 번째 호출에 입력 요소에 부착 된 이벤트를보고하지만, 두 번째에 정의되지 않은 것입니다. 내가 업데이트 한 (숨겨진) 입력 필드의 내용을 자동 저장하는 일부 레거시 코드가 있기 때문에 첨부 된 이벤트가 필요합니다.
여기 무슨 일입니까?
니스 정교한 대답. 내가 좋아했던만큼 다른 스크립트를 제어 할 수 없었기 때문에 두 번째 접근법을 사용할 수 없었다. 내 모듈에서 jquery _at all_를 참조하지 않고 종료되었습니다. 나는 당신의 최고 해결책이 더 표현 적이기 때문에 더 낫다고 생각한다. – Hauge