Javascript 如何向jQuery中的特定元素类型添加函数?

Javascript 如何向jQuery中的特定元素类型添加函数?,javascript,jquery,Javascript,Jquery,我能做到 jQuery.fn.validate = function(options) { var defaults = { validateOPtions1 : '', validateOPtions2 : '' }; var settings = $.extend({}, defaults, options); return this.each(function() { // you validation c

我能做到

jQuery.fn.validate = function(options) {
    var defaults = {
        validateOPtions1 : '',
        validateOPtions2 : ''
    };

    var settings = $.extend({}, defaults, options);

    return this.each(function() {
        // you validation code goes here
    });
};
但这将使validate()对每个元素都可用。我可以对任何元素执行此操作:$('some selector').validate()

有没有一种方法可以让它只对表单元素可用?例如:$('.mySpecialFormClass').validate()?

答案很简单:

$('form').validate();
选择器在jQuery中的工作方式有点像这样(就像在CSS中一样)


有关选择器的更多详细信息,请参阅。

如果您真的不想让该函数对除
标记以外的任何对象起作用,则必须让该函数引发异常

jQuery.fn.formsOnly = function() {
  return this.each(function() {
    if (!$(this).is('form')) throw "Forms only!";
    // whatever
  });
};

我想使.validate()对除“form”类型的元素之外的任何元素都不可用。因此,如果我调用,$('div').validate(),就会抛出一个“未定义函数”。例如,.val()(我相信)只适用于表单元素(输入、选择、文本区域)。@Chad事实并非如此-您可以使用
val()
处理任何需要的内容。当然,这是行不通的,但框架并没有让我们无法调用它。在这种情况下,我同意波蒂的答案。
jQuery.fn.formsOnly = function() {
  return this.each(function() {
    if (!$(this).is('form')) throw "Forms only!";
    // whatever
  });
};