jQuery单行代码优化获取和设置相同的输入元素



我正在使用PHPStorm,并有以下js代码

$('#id'.val($('#id'.attr('default'));

这个想法是将输入字段的值重置为它的默认值,这是在输入元素的default属性中设置的。

现在IDE建议我避免重复的选择器。

虽然它正在工作,我有兴趣找出什么是优化这行代码的最佳方法?

不完全是您所要求的,但更多的未来证明使用数据而不是属性。你甚至可以在那里存储复杂的数据或其他信息,如"originalvalue"或"lastchangedvalue"等。

在属性中存储是可以的,但我更喜欢在元素的数据中存储这样的东西,如:

<myelementtag id="myid" data-defaultvalue="defaultvalue" /> 

然后像这样访问它:

$('#myid').data("defaultvalue");
例如:

var myElement = $('#myid'); 
myElement.value = myElement.data('defaultvalue');

要重置默认值吗?

var mynewdefault = "mynewvalue";myElement。数据(defaultvalue, mynewdefault);

由于您只要求一个选择器和一行代码,请按照jQuery文档(中间部分)的说明使用:

$("#id").val(function(index,value) {
  return $(this).attr('default');
});

或者如果你想避免使用$(this):

$("#id").val(function (index, value) {
    return this.getAttribute('default');
});

JSFiddle

是的,正如其他成员指出的那样,如果您使用data属性(data-defaultValue)来代替会更好。

这是一个更紧凑的解决方案:

var id = $('#id'); 
id.val(id.attr('default'));

你真的不需要每次都用$(...)

将jQuery元素存储在变量中:

var $id = $('#id');
$id.val($id.attr('default'));

最新更新