2014-12-11 3 views
0

Я делаю функцию, которая принимает 4 аргумента. Затем он поместит значение аргумента в div. Если пользователь нажимает на div, он будет запускать функцию. Затем он удалит значение, которое было помещено в выборки div.если утверждения и нажмите();

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

ответ

0

Вам необходимо сделать if внутри обработчика click, а не при привязке всех обработчиков. Нет необходимости связывать обработчики внутри функции, вы можете сделать это глобально. Они ничего не сделают, пока вы не вызовете функцию, так как это устанавливает 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 вписывается в это, так что я не уверен, что это должно быть true или false.

+0

Я считаю, что вы имели в виду '# choice1, # choice2, # choice3, # choice4' не' # выбор1, выбор2, выбор3, выбор4' – PeterKA

Смежные вопросы