Ich möchte folgendes Element in DOM auswählen, um den Benutzer auf eine andere Seite umzuleiten, wenn er auf die Schaltfläche klickt.

<button type="submit" name="add-to-cart" class="single_add_to_cart_button button alt ph_bookings_book_now_button">Book Now</button>

Dazu verwende ich jQuery jQuery(".single_add_to_cart_button.button.alt.ph_bookings_book_now_button").on("click", function() {...}.

Da ich ein Plugin verwende, ist die Buchungsschaltfläche visuell nicht aktiv, bis der Benutzer ein Datum auswählt. Die Klasse ist dann .single_add_to_cart_button.button.alt.disabled.ph_bookings_book_now_button (siehe zusätzliche disabled).

Um die Schaltfläche nur auszuwählen, wenn das Element die deaktivierte Klasse nicht enthält, habe ich Folgendes versucht:

jQuery(".single_add_to_cart_button.button.alt.ph_bookings_book_now_button").on("click", function() {
  if(jQuery(".single_add_to_cart_button.button.alt.disabled.ph_bookings_book_now_button")) {
    break;
  } else {
    window.location = "http://www.google.com/";
  }
});

Das funktioniert leider nicht. Wie kann ich ein Element auswählen, wenn es genau die Klassen enthält und nicht mehr?

1
Jonas 24 Feb. 2020 im 11:20

3 Antworten

Beste Antwort

Sie können den Selektor: not verwenden

jQuery(".single_add_to_cart_button.button.alt.ph_bookings_book_now_button:not(.disabled)").on("click", function()...
3
Mahatmasamatman 24 Feb. 2020 im 08:45

Warum setzen Sie nicht ID-Attribut auf Ihre Schaltfläche wie

<button id="btn_abc" type="submit" name="add-to-cart" class="single_add_to_cart_button button alt ph_bookings_book_now_button">Book Now</button>

Und benutze id anstelle der Klasse, d.h.

jQuery("btn_abc").on("click", function() {
    if(jQuery("#btn_abc").hasClass('disabled')) {
        break;
    } else {
        window.location = "http://www.google.com/";
    }
});

Vielen Dank, dass Sie uns helfen lassen

0
Muneeb Ur Rehman 24 Feb. 2020 im 08:41

Sie können dies ohne die 2 Klassen tun. Sie benötigen das Ereignis nur für eine Klasse, wenn dieses Ereignis nur für ein solches Element gelten muss: single_add_to_cart_button Sie können auch einfach eine neue Klasse für das Ereignis angeben, damit Sie später keine Probleme haben, sie zu finden. (Informationen zur schnelleren Entwicklung finden Sie in den Dokumenten zur Namenskonvention.) Versuche dies:

jQuery(".single_add_to_cart_button.button.alt.ph_bookings_book_now_button:not(.disabled)").on("click", function() { ... });

Besser zu schreiben ist:

$(".yourElement:not(.disabled)").on('click', function { ... });
1
Omkar 24 Feb. 2020 im 08:50