ja podejrzewam, że to do pracy w pierwszy:Sprawdź, czy dwa elementy są takie same
if ($('#element') == $('#element')) alert('hello');
Ale tak nie jest. Jak można sprawdzić, czy elementy są takie same?
ja podejrzewam, że to do pracy w pierwszy:Sprawdź, czy dwa elementy są takie same
if ($('#element') == $('#element')) alert('hello');
Ale tak nie jest. Jak można sprawdzić, czy elementy są takie same?
Jak jQuery 1.6 można teraz po prostu zrobić:
$element1.is($element2)
Chciałbym użyć addClass() do oznaczania otwartych i można to łatwo sprawdzić.
Silky lub Santi twierdzą, że najprostszym sposobem na sprawdzenie będzie unikalny identyfikator lub klasa. Powód, dla którego twoje instrukcje if nie działają tak, jak się spodziewasz, polega na porównywaniu 2 obiektów i sprawdzaniu, czy są to te same obiekty w pamięci.
Ponieważ jest to zawsze nowy obiekt tworzony przez $ (this), nigdy nie mogą się one równać. Dlatego musisz przetestować właściwość obiektu. Możesz uniknąć unikalnego identyfikatora/klasy, jeśli każdy element openActivity miałby inną zawartość, na którą mógłbyś przetestować.
To powinno działać:
if ($(this)[0] === $(this)[0]) alert('hello');
więc powinien to
if (openActivity[0] == $(this)[0]) alert('hello');
nie powinny być twój drugi przykład = == i nie ==, aby poprawnie odzwierciedlić Twój pierwszy przykład? – Prusprus
Ta odpowiedź mogła być właściwa w starszych wersjach jquery, ale większość ludzi prawdopodobnie używa wersji obsługującej '$ .is' –
Jak ktoś już powiedział, ten sam element HTML zawinięte w dwóch różnych momentach generuje dwa różne instancje jQuery, więc nigdy nie może być równy.
Zamiast elementy HTML opakowane mogą być porównywane w ten sposób, ponieważ lokalizacja pamięci zajmują to samo jeśli jest to ten sam element HTML, więc:
var LIs = $('#myUL LI');
var $match = $('#myUL').find('LI:first');
alert(LIs.eq(0) === $match); // false
alert(LIs.get(0) === $match.get(0)) // TRUE! yeah :)
Pozdrawiam!
Albo po prostu
if (openActivity[0] == this) alert('hello');
(bez nowej instancji jQuery ;-)
Jest to najlepsza odpowiedź dla wszystkich ostatnich wersji Jquery. –
Kolejny chciałbym móc przegłosować za każdym razem, gdy skończę szukanie tego samego pytania i znalezienie tej odpowiedzi – freefaller