JSON 응답에서 HTML을 추가 할 때 이벤트 핸들러는 이벤트 바인딩을 잃어 버리는 것처럼 보입니다. .live()
함수를 사용하면 처리기가 작동하는 것처럼 보입니다.jQuery 동적 체크 박스 이벤트 처리
$.each(result[0], function(i,wellList) {
$jsonResult = wellList["@name"];
$uid = wellList["@uid"];
$dynamicCheckBoxDiv += '<input type="checkbox" name="checkbox-1" value="'+ $uid
+ '" class="wellCheck" id="checkbox-'+i+'" />' +
'<label for="checkbox-'+i+'">' + $jsonResult + '</label>';
});
$dynamicCheckBoxDiv += '</fieldset></div>';
//Append results to div
$("#dynamicCheck").append($dynamicCheckBoxDiv).page();
$(".wellCheck").live('click', (function() {
이 이벤트는 이제 클릭 기능이 실행될 때 발생합니다. 그러나 확인란을 몇 번 클릭하면 확인란이 잘못된 상자와 무작위로 연결되고 클릭 한 번으로 클릭 이벤트가 시작됩니다. 이걸 본 사람 있어요?
기타 : 별도의 버튼으로 모든 상자를 검사하는 방법을 어떻게 추가 할 수 있습니까? 그들은 동적으로 추가되고 있기 때문에 그냥이 기능을 무시하는 것 같습니다 :
// When select No wells is clicked this method is run
$('#selectNone').click(function() {
$('#dynamicCheck .wellCheck').find(':checkbox').attr('checked', 'checked');
});
그것은 방법을 입력하지만 상자를 확인하지 않습니다. 이 페이지에 jQuery 및 jQuery 모바일이 추가되어 있고 두 방법 모두 document.ready
아래에 있습니다.
javascript에는 알고있는 지역 변수를 정의하는 방법이 있습니다. *** var *** - 범위를 오염시키는 대신 사용하십시오. – rlemon
변수는 로컬입니다. 그것들은 각각 위에 올려 져 있습니다 (아직 getJSON 반환 함수 안에 있습니다). 'each'루프를 돌 때마다 변수를 다시 만들어야하는 이유가 있습니까? –
아니요, 죄송합니다. 저는 인식하지 못했습니다. 범위 밖에서 전역 변수를 작성한다고 가정했습니다. – rlemon