2012-12-12 2 views
0

나는 다음과 같은 jQuery 코드가 다음과 같이만들기 버튼 트리거 기능

$("#btnReset").click(function() { 
    ColReorder.fnReset(oTable); 
    return false; 
}); 

그리고 HTML을 :

<div style="padding: 5px 5px 1px 0px; float: right" id="globalbutton-row" class="ex"> 
    <button class="button" type="button" id="btnReset"><%=rb.getString("button.reset")%></button> 
    <button class="button" type="button" id="btnDeveloperSampleMenu" onclick="javascript:CallDeveloperSampleMenu()"><%=rb.getString("button.devsamplemenu")%></button> 
</div> 

는 I 버튼 '재설정'기능 ColReOrder.fnReset을 시작을 원하는 그러나 어떤 이유로 이것이 작동하지 않습니다.

+0

"작동하지 않음"이란 무엇을 의미합니까? 콘솔에 오류가 있습니까? –

+0

ColReorder.fnReset (oTable) 함수는 어디에 있습니까? –

+3

문서로 준비 했습니까? – adeneo

답변

1

이벤트 위임을 사용해보세요. 귀하의 자바 스크립트가 실행될 때 요소가 dom에로드되지 않은 가능성이 있습니다. 클릭 이벤트를 문서에 첨부하면 코드를 듣고 클릭 할 때 선택기를 검색하여 코드가 작동합니다.

$(document).on('click','#btnReset',function() { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
+0

이것은 작동합니다! 감사합니다 :) –

2

아직로드되지 않은 DOM에서는 아무 것도 참조하지 않도록주의해야합니다. 코드가 실행되기 전에 <button>이 DOM에로드되지 않으면 아무 일도 발생하지 않습니다. 당신은 모든이로드 될 때 코드를 실행하여이 문제를 해결할 수 있습니다 다음 <button>은 AJAX 또는 다른 방법을 통해 추가되는 경우

$(document).ready(function() { 
    $("#btnReset").click(function() { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
}); 

은 또한이 같은 문제가 있습니다. 당신은 on() 방법을 사용하여이 문제를 해결할 수 있습니다

문서가로드 된 후 코드를 실행해야
$(document).ready(function() { 
    $(document).on('click',"#btnReset", function(event) { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
}); 
+0

live() 함수는 최신 jQuery에서 더 이상 사용되지 않습니다. 대신 .on()을 사용하십시오. – bluetoft

+0

감사합니다. @Bluetoft. 그에 따라 내 대답을 업데이 트되었습니다. –

+0

그건'on' 작동 방식이 아닙니다. 당신은'.live()'를'.on()'으로 대체하지 않습니다. 그들은 다르다. ('click', '#btnReset', function() {', 여기서'# parent''는 항상 DOM에있는 가장 가까운 부모입니다.'$ ('# parent' document') –

0

.

$(function() { 
    $("#btnReset").click(function() { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
});