Согласно документации jQuery, "Не все объекты jQuery созданы ===."
"Важная деталь в отношении этого" обертывания "поведения заключается в том, что каждый завернутый объект уникален. Это справедливо, даже если объект был создан с тем же селектором или содержит ссылки на те же самые элементы DOM".
Я знаю, как обойти это, но почему это так? Это какой-то конкретный способ поведения JavaScript?
Да. Каждый объект в JS уникален, поскольку o1 === o2
не будет истинным, если o1
и o2
являются указателями на один и тот же объект.
{ foo: 1 } === { foo: 1 }; // false
Поэтому объекты jQuery просто следуют этому же правилу:
var jq1 = $('.foo');
var jq2 = $('.foo');
jq1 === jq2; // false
Единственное исключение - если у вас есть переменные, которые фактически указывают на один и тот же объект jQuery:
var jq3 = jq1;
jq3 === jq1; // true