2014-12-11 3 views
0

4 개의 인수를 취하는 함수를 만들고 있습니다. 그런 다음 인수의 값을 div에 넣습니다. 사용자가 div를 클릭하면 함수가 실행됩니다. 그런 다음 선택 div에 입력 된 값을 삭제합니다.if 문과 클릭();

var fullDialogChoices = function(choice1, choice2, choice3, choice4) { 
    $("#choice1").html("<p>" + choice1 + "</p>"); 
    $("#choice2").html("<p>" + choice2 + "</p>"); 
    $("#choice3").html("<p>" + choice3 + "</p>"); 
    $("#choice4").html("<p>" + choice4 + "</p>"); 
    choiceDisplayVar = true; 
    if(choiceDisplayVar == true) { 
     $("#choice1").click(function() { 
      addDialogUser_0(choice1) 
      deleteChoicesVar = true; 
      choiceDisplayVar == false; 
     }); 
     $("#choice2").click(function() { 
      addDialogUser_0(choice2) 
      deleteChoicesVar = true; 
      choiceDisplayVar = false; 
     }); 
     $("#choice3").click(function() { 
      addDialogUser_0(choice3) 
      deleteChoicesVar = true; 
      choiceDisplayVar = false; 
     }); 
     $("#choice4").click(function() { 
      addDialogUser_0(choice4) 
      deleteChoicesVar = true; 
      choiceDisplayVar = false; 
     }); 
    } 
    else if(deleteChoicesVar == true) { 
     closeChoices(); 
     deleteChoiceVar = false; 
     choiceDisplayVar = false; 

    } 
} 

제대로 기능을 지정하지 않습니다. 다른 사람이 한 div를 클릭 할 때 그는 다른 사람을 클릭 할 수 없으며 else if 문에있는 작업을 수행합니다. 현재 사용자는 선택 div를 계속 클릭하고 연관된 div 함수를 실행할 수 있습니다.

감사합니다.

업데이트고맙습니다.

+0

우리는 질문에 대답 할 수있게하기 위해 그보다 명확해야합니다. 두 가지 포인트 : 1) 함수의 각 호출은'choiceDisplayVar = true'를 설정합니다.'else'가 결코 실행되지 않으므로'if-else'는 필요 없습니다. 2) 함수의 각 호출은 클릭 이벤트 리스너를 설정합니다. 결국 다중 리스너로 끝납니다. 동일한 이벤트, 동일한 핸들러 ... 좋지 않습니다. 당신의 목표는 무엇입니까? – PeterKA

답변

0

click 핸들러 안에 if을 수행해야합니다. 모든 핸들러를 바인딩 할 때가 아닙니다. 함수 내부에서 핸들러를 바인딩 할 필요가 없습니다. 전역 적으로 처리 할 수 ​​있습니다. 함수를 호출 할 때까지 아무 것도하지 않습니다. choiceDisplayVartrue으로 설정합니다.

var choiceDisplayVar = false; 
var fullDialogChoices = function(choice1, choice2, choice3, choice4) { 
    $("#choice1").html("<p>" + choice1 + "</p>"); 
    $("#choice2").html("<p>" + choice2 + "</p>"); 
    $("#choice3").html("<p>" + choice3 + "</p>"); 
    $("#choice4").html("<p>" + choice4 + "</p>"); 
    choiceDisplayVar = true; 
} 
$("#choice1, #choice2, #choice3, #choice4").click(function() { 
    if (choiceDisplayVar) { 
     addDialogUser_0($(this).text()); 
     $(this).text(""); // Remove the value from the clicked choice DIV 
     closeChoices(); 
     deleteChoicesVar = true; 
     choiceDisplayVar = false; 
    } 
}); 

나는 deleteChoicesVar이에 맞는 방법을 정확하게 확실하지 않다, 그래서 true 또는 false해야합니다 있는지 확실하지 않습니다.

+0

나는'# choice1, choice2, choice3, choice4'가 아니라'# choice1, # choice2, # choice3, # choice4'를 의미한다고 생각합니다. – PeterKA