2014-10-23 8 views
0

Итак, у меня есть оператор if, который проверяет идентификатор перетаскиваемого объекта, который был просто сброшен в droppable. Я проверил в консоли с помощью console.log, чтобы проверить, работает ли инструкция if. Он возвращает правильное значение true/false, но даже если он возвращает false, он все еще выполняет код, а не else. Я не писал много кода, потому что я совершенно уверен, что это проблема с моим оператором if, а не с кодом в целом. Оператор if выполняется независимо от того, что я положил после ===. Я видел, что у кого-то была эта проблема, и это было связано с бесконечной рекурсией, но ответ был слишком специфичен для его кода, чтобы я мог понять.Оператор if, даже если false

$("#game1drop1").droppable ({ 
    drop: function(e,ui) { 
     if ($(ui.draggable[0].id === "game1img1")) { 
      $("#game1drop1").addClass("correct")} 
     } 
     else{ 
      $(ui.draggable[0]).addClass("positionWrong") 
     } 
    } 
}); 
+2

это выражение странно '$ (ui.draggable [0] .id === "game1img1")', все логическое выражение помещается в '$ (.. .) '? –

ответ

6

Это потому, что у вас есть $(), обернутый вокруг вашего теста. Так что это эквивалентно:

if ($(false)) { 

Это обертывание false в объекте JQuery, и все объекты truthy.

Оно должно быть:

if (ui.draggable[0].id === "game1img1") { 
+0

Спасибо, отлично! – Peter

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