2013-01-10 8 views
0

mouseevent 기능이 실행될 때 한 번만 실행하고 싶습니다.함수에서 mouseEvent가 다시 호출되면 두 번 발생합니다.

$(document).ready(function() { 
    $("#menu").click(function(){ 
     $('#menu_div').show(); 
     menu_function(); 
    }); 


    $("#menu_close").click(function(){ 
     $('#menu_div').hide(); 
    }); 
}); 

function menu_function(){ 
    $(".select_li").live(
     "click", 
     function() { 
      alert("test"); 
     } 
    ); 
} 

예제에는 메뉴와 메뉴가 두 개 있습니다. 메뉴를 누르면 ui 상자가 표시되고 menu_function을 실행하면 경고 테스트 메시지가 나타납니다. 문제는 menu_close를 클릭하고 상자를 닫은 다음 다시 열면 경고 테스트가 두 번 실행됩니다. 나는 div 상자가 닫히고 다시 열리는 시간이 함수의 불의 시간과 같다고 생각한다. 어떻게 해결할 수 있는가?

언 바인딩을 사용하지 않으려는 경우 더 좋은 해결책이 있습니까?

+0

는 관련 HTML 코드를 추가하거나, 최소한의 [jsfiddle]를 구축 (http://jsfiddle.net/)에서 귀하의 문제가 귀하를 도우려는 사람들에게 큰 도움이 될 것입니다. – Zack

+1

나는 일반적으로 포맷되지 않은 코드가 포함 된 질문을 downvote하지만 이번에는 안됩니다 - 앞으로 질문에 코드를 들여 쓰기하십시오. 그것은 그들이 당신을 돕는 사람들을 위해 훨씬 쉽게 읽을 수있게합니다! – halfer

+0

downvoting하지 주셔서 감사합니다, 문제는 잭에 의해 설명됩니다 – user782104

답변

5

menu_function()은 알림 테스트 메시지를 발생시키는 것이 아닙니다. 테스트 알림을 발생시키는 "select_li"클래스가있는 모든 DOM에 실시간 클릭 수신기를 추가하는 것입니다. 즉, #menu를 클릭 할 때마다 .select_li에 다른 리스너가 추가되므로 #menu 10x를 클릭하면 .select_li를 클릭 할 때마다 10 명의 리스너가 있어야합니다. 당신이 진정으로 당신이 #menu를 클릭하면 그냥 경고를 표시하려는 경우

, 당신의 menu_function는()는 다음과 같아야합니다

function menu_function() { 
    alert("test"); 
} 
+0

잘 잭했다. –

+0

답장을 보내 주셔서 감사합니다. div 메뉴를 열 때 버튼을 사용해야하고 메뉴에서 테스트 경고를 위해 버튼을 눌러야합니다. 수업을해야한다는 의미입니까? – user782104

+0

당신이 그 질문의 의미를 분명히하십시오 - 나는 당신이 무엇을 요구하고 있는지 정말로 확신하지 못합니까? 위 질문과 관련이 없거나 전혀 다른 경우 새 질문을 열어 볼 수 있습니다. 위의 질문과 같은 경우, 정확히 무엇을하려하는지 명확하게 설명하고 해당되는 경우 jsfiddle 표현을 제공하십시오. – Jack