Ich mache ein Popup-System und ich habe einige Probleme mit der Verwendung von event
als Attribut in meiner benutzerdefinierten Funktion. Hier ist mein Code:Verwenden von Ereignis in jQuery benutzerdefinierte Funktion
var openLayoutPopup = function(event){
event.preventDefault();
var target = $(event.target);
var flexible_field = target.closest('.acf-field-flexible-content').attr('data-key');
var popup = $('.'+flexible_field);
var overlay = $('.bbh-popup-overlay');
popup.addClass('open').fadeIn();
overlay.fadeIn();
}
$('.my-class').click(openLayoutPopup(event));
Aber meine Konsole gibt mir die folgende Fehlermeldung, Ereignis nicht definiert ist:
ReferenceError: event is not defined
ich verwendet habe event.target
vor und event.which
, aber nur für unbenannte Funktionen.
Zusätzlich habe ich eine ähnliche Funktion, in denen ich brauche event
und einen sekundären boolean Parameter zu übergeben:
function closeLayoutPopup(event, openLayout){
event.preventDefault();
var popup = $(event.target).closest('.bbh-popup');
var overlay = $('.bbh-popup-overlay');
popup.removeClass('open').fadeOut();
overlay.fadeOut();
if(open == true){
var dataLayout = target.attr('data-layout');
acf.fields.flexible_content.add(dataLayout);
}
}
Ähnlich über Ich bin verwirrt, wie die Parameter in diesem einen zu übergeben.
EDIT:
Was ich versuchte, kurz zu tun erklärt eine Taste ein Popup geöffnet wird müssen. Popup hat zwei Knöpfe, einen zum Schließen des Popups und einen zum Hinzufügen des Layouts zur Seite und zum Schließen danach. Problem war, dass ich Funktionen falsch nannte, und meine Lösung nicht zu erkennen, war unlogisch.
Ich habe die Click-Ereignisse dank @Raibaz behoben. Dann habe ich zu closeLayoutPopup
auf die addLayout
Funktion, anstatt sie zu kombinieren:
/*==============================================
= Function - Close popup =
==============================================*/
function closeLayoutPopup(event){
event.preventDefault();
var popup = $(event.target).closest('.bbh-popup');
var overlay = $('.bbh-popup-overlay');
popup.removeClass('open').fadeOut();
overlay.fadeOut();
}
/*=============================================
= Function - Open popup =
=============================================*/
var openLayoutPopup = function(event){
event.preventDefault();
var target = $(event.target);
var flexible_field = target.closest('.acf-field-flexible-content').attr('data-key');
var popup = $('.'+flexible_field);
var overlay = $('.bbh-popup-overlay');
popup.addClass('open').fadeIn();
overlay.fadeIn();
}
/*=============================================
= Function - Add Layout =
=============================================*/
var addLayout = function(event){
event.preventDefault();
var target = $(event.target);
var dataLayout = target.attr('data-layout');
acf.fields.flexible_content.add(dataLayout);
closeLayoutPopup();
}
/*---------- add section click - open popup ----------*/
$('.acf-field-flexible-content .acf-flexible-content > .acf-actions a.acf-button').on('click',openLayoutPopup);
/*---------- Close button click ----------*/
$('.layout-picker-close').on('click', closeLayoutPopup);
/*---------- Add layout ----------*/
$('.bbh-popup a.add-layout-button').on('click', addLayout);
was ist das? $ ('. my-class (openLayoutPopup (event)); Tippfehler ??? Ich bin mir nicht sicher, was du vorhast. – Kosch
@Kosch Ja, das war ein Tippfehler des Jahres. Ich löschte einen wirklich langen Selektor und ging ein bisschen Triggerhappy mit der Backspace-Taste. Es ist wieder normal. @ t.niese, wenn ich 'Event' als Parameter auf das Click-Ereignis für' .my-Klasse' übergeben Ich bekomme den Fehler für diese Zeile. Wenn ich nichts übergebe, bekomme ich den Fehler in der ersten Zeile der Funktion 'event.preventdefault()' –