如果“清除”你的意思是设置的文本/密码输入,文本域的值,然后选择元素为空字符串,并设置无线电和复选框!checked
,那么你可以做这样的事情:
$("#someid").find('select,textarea,input[type="text"],input[type="password"]').val('');
$("#someid").find('input:radio,input:checkbox').prop('checked',false);
或者作为插件:
(function($) {
$.fn.clearChildren = function() {
this.find('select,textarea,input[type="text"],input[type="password"]').val('');
this.find('input:radio,input:checkbox').prop('checked',false);
return this;
};
})(jQuery);
$("#someid").clearChildren();
演示:http://jsfiddle.net/nnnnnn/AvfUz/
(jQuery也有一个 “:输入” 选择所有选择素选择器ts,textareas和输入,但是您不想设置复选框和收音机的值,因此需要单独完成)。
我喜欢插件选项,但我担心没有什么是将clearChildren函数绑定到nameControl。 clearChildren是一个全局函数,可以在任何对象上调用。当然,我可以在函数中检查我调用clearChildren函数的对象是nameControl,而不是其他任何东西,但是我正在寻找可用于将函数绑定到类的jQuery级别支持的可能性。 – CSC 2012-02-10 21:17:58
我真的不明白你的担忧:你为什么要限制这种类型的功能,以单一控制?我想你可以添加一个方法到相应的服务器端类,这样<%= TheControl.clear()%>将输出合适的JS。顺便说一句,我忘了在我的回答中提到,如果你的控件是一个html表单元素,你可以调用内置的.reset()方法... – nnnnnn 2012-02-10 22:31:33
谢谢nnnnnn的回复。这就是为什么我想限制功能为单一控制的原因。我们团队中的大多数用户控件都是使用Ajax框架创建的。他们有“clear()”方法来清除这些控件的内容。因为Ajax框架允许用户将一个方法与控制类联系起来很容易。你有一个Ajax控件,可以说“Address”为其定义了“clear()”。当您调用<地址控制参考> .clear()时,代码将清除地址控制的内容。 – CSC 2012-02-13 20:53:09