jquery的,属性选择器,获得当前属性值
问题描述:
我有一个输入:jquery的,属性选择器,获得当前属性值
<input type="text" size="5" maxlength="5" decimals="2">
其中“小数”可以是从0到4
的值。在onblur事件,任何数字用户类型将改为符合,因此:
decimals="2"
User enters: 123.456
Input is changed to: 123.46
这很平凡,没问题。我的问题是关于获得“小数”值的最有效方法。既然我们已经选择了基于输入
$('[decimals]').blur(function(){
val = $(this).attr('decimals');
// *** do stuff with val ***
});
...但在我看来,就必须有一种更有效的方式来获得“小数”的价值:通常情况下,我会写(jQuery的)在那个属性上。有没有,或者我的代码是唯一的写法?
答
您可以看看attributes。这是一个NamedNodeMap有一些功能。
如果你指的是属性而不是custom data attributes你可以这样做:
$(function() {
$('[decimals]').blur(function(){
var val = this.attributes.decimals.value;
var val1 = this.attributes.getNamedItem('decimals').value;
var val2 = this.getAttribute('decimals');
console.log('this.attributes.decimals.value = ' + val);
console.log('this.attributes.getNamedItem("decimals").value = ' + val1);
console.log('this.getAttribute("decimals") = ' + val);
// *** do stuff with val ***
}).trigger('blur');
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<form>
<input type="text" size="5" maxlength="5" decimals="2">
</form>
相反,如果你指的是自定义的数据属性:
小数=” 2“
用户输入:123.456
输入更改为:123.46
你可以这样做:
$(function() {
$('[data-decimals]').on('blur', function(e){
var val = +$(this).data('decimals');
var txtNumber = +this.value;
this.value = txtNumber.toFixed(2);
});
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<form>
<input type="number" size="5" maxlength="5" data-decimals="2">
</form>
+0
因此,总而言之,没有办法无需在函数内部以某种方式询问属性值,也不需要快捷方式。我的问题主要是信息性的,希望能够学习新的东西。谢谢。 –
的SERMs没什么问题 – Noppey
如果您使用自定义属性至少使用*有效*自定义属性,使用'data-*'前缀,比如'data-decimals',可以用'elementReference.dataset.decimals'在普通的JavaScript中检索,或者在jQuery中用'$(ele ('decimals');' –
你在说'$(this)'吗?如果你想调用'$ .attr',你不能避免它,但这几乎是免费的(jQuery缓存),但你可以用'this.getAttribute('decimals')'读取值也 – cske