प्रदर्शन के संदर्भ में, क्या लाभ (या बस मतभेद) के बीच हैं:jQuery लाभ /() .click बनाम() .trigger में मतभेद
$('.myEl').click();
और
$('.myEl').trigger('click');
वहाँ कोई भी बिल्कुल?
प्रदर्शन के संदर्भ में, क्या लाभ (या बस मतभेद) के बीच हैं:jQuery लाभ /() .click बनाम() .trigger में मतभेद
$('.myEl').click();
और
$('.myEl').trigger('click');
वहाँ कोई भी बिल्कुल?
This is the code for the click
method को देखो:
jQuery.fn.click = function (data, fn) {
if (fn == null) {
fn = data;
data = null;
}
return arguments.length > 0 ? this.on("click", null, data, fn) : this.trigger("click");
}
जैसा कि आप देख सकते हैं; यदि फ़ंक्शन में कोई तर्क पारित नहीं किया गया है तो यह क्लिक ईवेंट ट्रिगर करेगा।
.trigger("click")
का उपयोग करके एक कम फ़ंक्शन कॉल किया जाएगा।
और @Sandeep के रूप में अपने answer.trigger("click")
में बताया तेजी से होता है:
As of 1.9.0 the check for data
and fn
has been moved to the .on
function:
$.fn.click = function (data, fn) {
return arguments.length > 0 ? this.on("click", null, data, fn) : this.trigger("click");
}
चेक http://api.jquery.com/click/:
तीसरे भिन्नता में, जब .click() तर्क के बिना कहा जाता है, यह ("क्लिक") .trigger के लिए एक शॉर्टकट है।
ऐसा लगता है कि वे वही हैं।
प्रदर्शन प्रकार के लिए। चेक करें .. http://jsperf.com/trigger-vs-not-trigger दोनों लगभग समान हैं ... क्लिक करें() ट्रिगर ('क्लिक') का लघुरूप है।
यह वास्तव में सच नहीं है। यह कहकर कि यह शॉर्टेंड का अर्थ है कि 'क्लिक() '' jquery.fn.click = function() {वापसी ट्रिगर ("क्लिक करें")} के रूप में लिखा गया था, लेकिन यह नहीं है (@andlrc द्वारा उत्तर देखें)। 'क्लिक()' संभावित कॉल 'ट्रिगर ("क्लिक") से पहले कुछ कोड चलाए जाते हैं, जो फ़ायरफ़ॉक्स के लिए स्पष्ट रूप से पर्याप्त इंतजार है, यह निर्धारित करने के लिए कि क्लिक ईवेंट प्रोग्रामेटिक रूप से लागू है, और इसका सम्मान नहीं करेगा। 'ट्रिगर (" क्लिक करें ")' एक दूसरे के एक अंश का एक अंश है। मैंने @Grack द्वारा उनकी टिप्पणी में उल्लिखित एक ही समस्या में भाग लिया, और 'ट्रिगर (" क्लिक करें ") 'कामों का उपयोग करके, जहां' क्लिक()' नहीं किया। – SeanKendle
मुझे लगता है कि कि
$('.myEl').trigger('click');
क्योंकि यह आपको बचाता है एक समारोह कॉल के रूप में $('.myEl').click();
सिर्फ इतना है कि funciton कॉल बेहतर है। jQuery स्रोत से कोड
jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup error contextmenu").split(" "), function(i, name) {
// Handle event binding
jQuery.fn[ name ] = function(data, fn) {
if (fn == null) {
fn = data;
data = null;
}
return arguments.length > 0 ?
this.on(name, null, data, fn) :
//here they call trigger('click'); if you provide no arguments
this.trigger(name);
};
if (jQuery.attrFn) {
jQuery.attrFn[ name ] = true;
}
if (rkeyEvent.test(name)) {
jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
}
if (rmouseEvent.test(name)) {
jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
}
});
बस जोड़ने के लिए ... मैंने हाल ही में .click() का उपयोग करने का प्रयास किया और यदि क्रोम में विफल रहा (एफएफ और सफारी में ठीक काम किया)। मैंने .trigger ('क्लिक') का उपयोग करने के लिए स्विच किया और फिर यह क्रोम में भी काम किया। – Graeck
@ ग्रेक मुझे यकीन है कि आपको उस कोड में कोई गलती है .... आप जो कह रहे हैं उस पर सभी तर्क बिंदुओं का कारण बकवास है ... क्षमा करें .. – andlrc
@Graeck मैंने भी वही किया है जो मेरे साथ भी हुआ है , '.click() 'jQuery के पुराने संस्करणों में' .bind() 'के लिए एक शॉर्टकट था, ऐसा हो सकता है .. –