JQuery .trigger पर पासिंग पैरामीटर


82

मैं JQuery ट्रिगर का उपयोग कर रहा हूं, लेकिन यह सुनिश्चित नहीं हूं कि मेरी स्थिति में मापदंडों को पारित करने के लिए सही सिंटैक्स क्या है। यहाँ मैं कॉल कर रहा हूँ:

$('#'+controlName).trigger(event);

यहाँ मैं इवेंट बाइंडिंग कर रहा हूँ:

$(window).on('onPartialRendered', onPartialRendered);

और यहाँ मेरा इवेंट हैंडलर है:

var onPartialRendered = function () {

    .....
};

जब तक मैं मापदंडों को पारित करने की कोशिश नहीं करता तब तक सब कुछ ठीक काम करता है। मेरे उदाहरण के अनुसार इसे करने का सही तरीका क्या होगा?


हां, मैंने सिंटैक्स का उपयोग करके ट्रिगर (घटना, ['परम 1,' परम 2 ']] को पार करने की कोशिश की, लेकिन बिना किसी सफलता के
user517406

onPartialRenderedइसके हस्ताक्षर में आपका कोई पैरामीटर नहीं है। यह होना चाहिए onPartialRendered = function(e, p1, p2)
रॉकेट हज़मत

@ user517406 आपने उन मापदंडों को पारित करने की कोशिश कैसे की जो काम नहीं करते थे?
epascarello

@ user517406 हमारे साथ खेलने के लिए jsfiddle.net में कुछ कोड पोस्ट करने का प्रयास करें।
ईडर

जवाबों:


152

पहला पैरामीटर हमेशा इवेंट नाम के साथ स्ट्रिंग होता है और अगले पैरामीटर अतिरिक्त डेटा होते हैं:

.trigger('foo', [1, 2]);

.on('foo', function(event, one, two) { ... });

रॉकेट हज़मत के लिए विशेष धन्यवाद

उदाहरण:

var controller = {
  listen: function (event, json, string) {}
};

$('body').trigger('this_works', [{data: [1, 2, 3]}, 'something']);

$('body').on('this_works', function (event, json, string) {
  controller.listen(event, json, string);
});

दूरस्थ आंशिक:

कृपया इस तरह का उपयोग न करें। नेटवर्क में इस समस्या के बारे में कई लेख हैं। यह ज्यादा समय लेता है और नेटवर्क में अनावश्यक यातायात उत्पन्न करता है। कृपया इस तरह से उपयोग करें:

var template = $('#templates #example_template').detach();
var clone = template.clone();
clone.find('.some_field').val('new_data');
clone.attr('id', null);
$('table tbody').append(clone);

11
काफी नहीं। .triggerकेवल 2 तर्क लेता है। आपको मापदंडों की एक सरणी (या ऑब्जेक्ट) पास करने की आवश्यकता है।
रॉकेट हज़मत

यदि मैं अपने उदाहरण में इवेंट हैंडलर से इवेंट बाइंडिंग को अलग करना चाहता हूं तो सही सिंटैक्स क्या होगा?
user517406

क्या आप कृपया सिंटैक्स उदाहरण दे सकते हैं, इस सिंटैक्स का उपयोग करने से काम नहीं चलता: ईवेंट बाइंडिंग $ (विंडो) .on ('onPartialRendered', onPartialRendered (p1, P2)); ईवेंट हेंडरलर var ऑनपार्टियलरेंडर्ड = फंक्शन (पी 1, पी 2) {...}
user517406

2
@ user517406 इवेंट हैंडलर के रूप में फंक्शन रेफरेंस पास करने का यह पूरी तरह से गलत तरीका है। उन मापदंडों को जोड़ें जहां आप फ़ंक्शन को परिभाषित कर रहे हैं । var onPartialRendered = function (event,one,two) {
केविन बी

2
बस इसे ट्रिगर बदलें: $ ('शरीर')। ट्रिगर ({प्रकार: 'this_works', डेटा: [1,2,3], संदेश: 'कुछ'}) ;; हैंडलर में अभी भी फंक्शन (ईवेंट) हो सकता है और Event.data और event.message बताकर पैरामीटर प्राप्त कर सकते हैं।
लिनियम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.