/ / मैं jQuery के माध्यम से एक तत्व में फ़ंक्शन कैसे जोड़ सकता हूं? - जावास्क्रिप्ट, jquery

मैं jQuery के माध्यम से किसी तत्व में फ़ंक्शन कैसे जोड़ूं? जावास्क्रिप्ट, jquery

मैं ऐसा कुछ करना चाहता हूं:

$(".dynamicHtmlForm").validate = function() {
return true;
}

$(".dynamicHtmlForm .saveButton").click(function() {
if (!$(this).closest(".dynamicHtmlForm").validate()) {
return false;
}

return true;
});

और फिर जब मेरे पास एक क्लास डायनेमिकहेटलफ़ॉर्म का रूप होता है, तो मैं एक कस्टम वैलिडेट () फ़ंक्शन प्रदान करने में सक्षम होना चाहता हूं:

$("#myDynamicHtmlForm").validate = function() {
// do some validation

if (there are errors) {
return false;
}

return true;
}

लेकिन मुझे यह तब मिलता है जब मैं ऐसा करता हूं:

$(this).closest(".dynamicHtmlForm").validate is not a function

क्या मैं भी संभव वर्णित है? यदि हां, तो मैं क्या गलत कर रहा हूँ?

उत्तर:

जवाब के लिए 3 № 1
jQuery.fn.validate = function(options) {

var defaults = {
validateOPtions1 : "",
validateOPtions2 : ""
};

var settings = $.extend({}, defaults, options);
return this.each(function() {
// you validation code goes here
});
};

$(document).ready(function() {

$("selector").click(function() {

$("some selector").validate();

// or if you used any options in your code that you
// want the user to enter. then you go :
$("some selector").validate({
validateOPtions1: "value1",
validateOPtions2: "value2"
});

});

});

जवाब के लिए 5 № 2

हां, यह तकनीकी रूप से संभव है। आपको स्वयं तत्व का संदर्भ देना होगा, हालाँकि, और jQuery संग्रह नहीं। यह काम करना चाहिए:

$(".dynamicHtmlForm").each(function (ix,o) {
o.validate = function() {
return true;
}
});

$(".dynamicHtmlForm .saveButton").click(function() {
if ($(this).closest(".dynamicHtmlForm")[0].validate()) {
return false;
}

return true;
}

जवाब के लिए 3 № 3

आप तत्व में फ़ंक्शन नहीं जोड़ रहे हैं,आप इसे तत्व के चारों ओर jQuery के आवरण के साथ जोड़ रहे हैं। हर बार जब आप चयनकर्ता को jQuery से पास करते हैं, तो यह पाए गए तत्वों के लिए एक नया आवरण बनाएगा:

$("#myEl"); // gives a jQuery wrapper object
$("#myEl"); // creates another jQuery wrapper object

यदि आप लिपटे हुए तत्व को एक वैरिएबल में सहेजते हैं और बाद में उपयोग करते हैं, तो यह एक अलग कहानी होगी क्योंकि आप सहेजे गए jQuery रैपिंग ऑब्जेक्ट को एक्सेस कर रहे हैं।

var dynamicHtmlForm = $(".dynamicHtmlForm");
dynamicHtmlForm.validate = function() {
return true;
}

$(".dynamicHtmlForm .saveButton").click(function() {
if (dynamicHtmlForm.validate()) {
return false;
}

return true;
}

आप फ़ंक्शन को सीधे तत्व का उपयोग करके भी जोड़ सकते हैं

$(".dynamicHtmlForm")[0].validate = function () { return true; }

// and later...
if (!$(this).closest(".dynamicHtmlForm")[0].validate())

या फिर आप jQuery को ठीक से देख सकते हैं एक प्लगइन लेखन.