可能是关于我使用jQuery方法的错误。我不确定该如何解决。因此,考虑将其组合起来以获得一些帮助。这是我要实现的目标:
我有一些基于某些后端逻辑的输入元素呈现到我的网页上,因此问题的外观趋于改变。对于那些将其类别定义为“ GTnumeric”且“ type”的值未“隐藏”的元素,我试图将“ type”的值设置为“ tel”(我无法更改任何逻辑在后端,因此尝试在前端实现这一目标)。
以下使用html dom元素的代码工作正常,但我试图找出一种使用jQuery实现相同功能的方法:
<input class="validated GTnumeric" size="3" type="hidden" value="">
<input class="validated GTnumeric" size="2" type="text" value="">
工作代码:
var r = $('[class="validated GTnumeric"]');
for(var ec in eClass){
if(eClass[ec].getAttribute("type") != 'hidden'){
eClass[ec].setAttribute("type","tel");
}
}
没有工作代码:
$(document).ready(function() {
var inputEls = $(".GTnumeric");
for(var ec in inputEls){
if($(inputEls[ec]).attr("type") != 'hidden'){
$(ec).attr("type","tel");
}
}
});
请您指导我。这将有很大的帮助。谢谢!
答案 0 :(得分:1)
您将获得jQuery对象的集合,而不是DOM元素(它们包含在jQuery对象中),因此您可以使用.each()
来解析它们,其中$(this)
是功能。
这是您要使用正确的jQuery执行的操作...
$(document).ready(function() {
var inputEls = $(".GTnumeric");
inputEls.each(function() {
if ($(this).attr("type") != "hidden"){
$(this).attr("type", "tel");
}
});
});
但是,您可以使用选择器来定位有问题的元素,并以此方式进行操作...
$(document).ready(function() {
$(".GTnumeric").not("[type=hidden]").attr("type", "tel");
});
这是一个例子...
$(".GTnumeric").not("[type=hidden]").attr("type", "tel");
$(".GTnumeric").each(function() { console.log(this.getAttribute("type")); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="GTnumeric" type="hidden"></div>
<div class="GTnumeric" type="hidden"></div>
<div class="GTnumeric" type="something"></div>
<div class="GTnumeric" type="else"></div>
<div class="GTnumeric" type="here"></div>