So I have an if statement that checks the id of the draggable that was just dropped in the droppable. I have checked in the console using console.log
to see if the the if statement is working properly. It is returning the right true/false value but even if it returns false it still executes the code and not the else. I haven't posted to much code because I am quite sure that it is a problem with my if statement and not with the code as a whole. The if statement executes regardless of what I put after the ===. I saw someone else had this problem and it was something to do with infinite recursion, but the answer was too specific to his code for me to understand.
$("#game1drop1").droppable ({
drop: function(e,ui) {
if ($(ui.draggable[0].id === "game1img1")) {
$("#game1drop1").addClass("correct")}
}
else{
$(ui.draggable[0]).addClass("positionWrong")
}
}
});
So I have an if statement that checks the id of the draggable that was just dropped in the droppable. I have checked in the console using console.log
to see if the the if statement is working properly. It is returning the right true/false value but even if it returns false it still executes the code and not the else. I haven't posted to much code because I am quite sure that it is a problem with my if statement and not with the code as a whole. The if statement executes regardless of what I put after the ===. I saw someone else had this problem and it was something to do with infinite recursion, but the answer was too specific to his code for me to understand.
$("#game1drop1").droppable ({
drop: function(e,ui) {
if ($(ui.draggable[0].id === "game1img1")) {
$("#game1drop1").addClass("correct")}
}
else{
$(ui.draggable[0]).addClass("positionWrong")
}
}
});
Share
Improve this question
edited Oct 23, 2014 at 8:47
Brett Gregson
5,9233 gold badges44 silver badges60 bronze badges
asked Oct 23, 2014 at 8:35
PeterPeter
553 silver badges9 bronze badges
1
-
2
this expression is strange
$(ui.draggable[0].id === "game1img1")
, the whole boolean expression is put into$(...)
? – King King Commented Oct 23, 2014 at 8:37
1 Answer
Reset to default 7It's because you have $()
wrapped around your test. So it's equivalent to:
if ($(false)) {
This is wrapping false
in a jQuery object, and all objects are truthy.
It should be:
if (ui.draggable[0].id === "game1img1") {