एक ही समारोह को ट्रिगर करने के लिए jQuery एकाधिक घटनाएं




events javascript-events (7)

JQuery 1.7 के रूप में, .on() विधि किसी ईवेंट में ईवेंट हैंडलर को जोड़ने के लिए पसंदीदा तरीका है। पिछले संस्करणों के लिए, .bind() विधि का उपयोग इवेंट हैंडलर को सीधे तत्वों को जोड़ने के लिए किया जाता है।

$(document).on('mouseover mouseout',".brand", function () {
  $(".star").toggleClass("hovered");
})

क्या keyup , keypress , blur , और change इवेंट्स रखने का कोई तरीका एक ही फ़ंक्शन को एक पंक्ति में कॉल करता है या क्या मुझे उन्हें अलग से करना है?

मेरी समस्या यह है कि मुझे कुछ डेटा को डीबी लुकअप के साथ प्रमाणित करने की आवश्यकता है और यह सुनिश्चित करना है कि प्रमाणीकरण मिस्ड मौसम से कोई रास्ता नहीं है, इसे टाइप या पेस्ट में चिपकाया गया है।


आप उस फ़ंक्शन को परिभाषित कर सकते हैं जिसे आप नीचे पुन: उपयोग करना चाहते हैं:

var foo = function() {...}

और बाद में आप नीचे दिए गए अनुसार एक स्थान छोड़कर ('ईवेंट') पर उपयोग करके उस फ़ंक्शन को ट्रिगर करने के लिए अपने ऑब्जेक्ट पर कई ईवेंट श्रोताओं को सेट कर सकते हैं:

$('#selector').on('keyup keypress blur change paste cut', foo);

आप कई घटनाओं में फ़ंक्शन संलग्न करने के लिए बाइंड विधि का उपयोग कर सकते हैं। बस इस कोड में ईवेंट नाम और हैंडलर फ़ंक्शन को पास करें:

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});

एक और विकल्प jquery api के चेनिंग समर्थन का उपयोग करना है।


तात्तु का जवाब यह है कि मैं इसे सहजता से कैसे करूंगा, लेकिन मैंने इंटरनेट एक्सप्लोरर में घटनाओं को घोंसले / बाध्य करने के तरीके से कुछ समस्याएं अनुभव की हैं, भले ही यह .on() विधि के माध्यम से किया जाता है।

मैं यह तय करने में सक्षम नहीं हूं कि jQuery के कौन से संस्करण वास्तव में समस्या है। लेकिन मुझे कभी-कभी निम्न संस्करणों में समस्या दिखाई देती है:

  • 2.0.2
  • 1.10.1
  • 1.6.4
  • मोबाइल 1.3.0 बी 1
  • मोबाइल 1.4.2
  • मोबाइल 1.2.0

मेरा कामकाज पहले कार्य को परिभाषित करने के लिए किया गया है,

function myFunction() {
    ...
}

और फिर व्यक्तिगत रूप से घटनाओं को संभाल लें

// Call individually due to IE not handling binds properly
$(window).on("scroll", myFunction);
$(window).on("resize", myFunction);

यह सबसे सुंदर समाधान नहीं है, लेकिन यह मेरे लिए काम करता है, और मैंने सोचा कि मैं इसे दूसरों की मदद करने के लिए बाहर रखूंगा जो इस मुद्दे पर ठोकर खा सकते हैं


यदि आप एक ही घटना हैंडलर को कई घटनाओं में संलग्न करते हैं, तो आप अक्सर एक से अधिक बार फायरिंग के मुद्दे में भाग लेते हैं (उदाहरण के लिए उपयोगकर्ता संपादन के बाद टैब दबाता है; कीडाउन, चेंज और ब्लर सभी आग लग सकती है)।

ऐसा लगता है कि आप वास्तव में क्या चाहते हैं इस तरह कुछ है:

$('#ValidatedInput').keydown(function(evt) {
  // If enter is pressed
  if (evt.keyCode === 13) {
    evt.preventDefault();

    // If changes have been made to the input's value, 
    //  blur() will result in a change event being fired.
    this.blur();
  }
});

$('#ValidatedInput').change(function(evt) {
  var valueToValidate = this.value;

  // Your validation callback/logic here.
});

यह मेरा इसे करने का तरीका है।

        $("input[name='title']").on({
            "change keyup": function(e){
                var slug = $(this).val().split(" ").join("-").toLowerCase();
                $("input[name='slug']").val(slug);
            },
        });

$("element").on("event1 event2 event..n", function() {
   //execution
});

यह ट्यूटोरियल कई घटनाओं को संभालने के बारे में है।





javascript-events