2014-12-11 27 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並運行它所關聯的功能。

謝謝!

更新 謝謝你們,我很抱歉,這不是很清楚,但我發現了該怎麼做。

+0

爲了讓我們回答這個問題,你必須做得更清楚。兩點:1)函數的每次調用設置'choiceDisplayVar = true' ---你不需要'if-else',因爲'else'永遠不會被執行。 2)函數的每次調用都會設置點擊事件監聽器,最終你會得到多個監聽器 - 相同的事件,相同的處理器......不太好。你的目標是什麼? – PeterKA 2014-12-11 02:20:29

回答

0

您需要在click處理程序中執行if,而不是綁定所有處理程序時。沒有必要綁定函數內部的處理程序,您可以在全局範圍內執行此操作。在你調用函數之前他們不會做任何事情,因爲它將choiceDisplayVar設置爲true

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適合這個,所以我不知道這是否應該是truefalse

+0

我相信你的意思是'#choice1,#choice2,#choice3,#choice4'不是'#choice1,choice2,choice3,choice4' – PeterKA 2014-12-11 02:28:05