Javascript 如何遍历子对象的属性并将其重命名为Jquery?
我有这个标记。我正在尝试编写jquery选择器,以获取模板顺序列表中名称为Works字符串的所有元素。我的要求是我有多个有序列表。若我要删除任何列表,我想在名称属性中重新排列索引Javascript 如何遍历子对象的属性并将其重命名为Jquery?,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我有这个标记。我正在尝试编写jquery选择器,以获取模板顺序列表中名称为Works字符串的所有元素。我的要求是我有多个有序列表。若我要删除任何列表,我想在名称属性中重新排列索引 <ol class="template"> <li> <span class="label" name="Works[0].Id"></span> </li> <li> <inpu
<ol class="template">
<li>
<span class="label" name="Works[0].Id"></span>
</li>
<li>
<input id="textBox" type="text" value="" name="Works[0].Body">
</li>
<li>
<input type="checkbox" id="checkbox" value="" name="Works[0].IsCompleted">
<input type="button" id="delete" value="Delete">
</li>
</ol>
<ol class="template">
<li>
<span class="label" name="Works[1].Id"></span>
</li>
<li>
<input id="textBox" type="text" value="" name="Works[1].Body">
</li>
<li>
<input type="checkbox" id="checkbox" value="" name="Works[1].IsCompleted">
<input type="button" id="delete" value="Delete">
</li>
</ol>
<ol class="template">
<li>
<span class="label" name="Works[2].Id"></span>
</li>
<li>
<input id="textBox" type="text" value="" name="Works[2].Body">
</li>
<li>
<input type="checkbox" id="checkbox" value="" name="Works[2].IsCompleted">
<input type="button" id="delete" value="Delete">
</li>
</ol>
我的方法是在我将删除任何订单列表之后,即单击删除按钮之后。我将获取每个有序列表,并通过迭代将0的索引更改为列表的长度。但我并没有得到合适的选择器来捕获有序列表中的元素,其name属性的值以Works开头。请推荐一些更好的选择器。您需要的选择器是:
$("ol.template [name^=Works]")
这是jQuery选择器
顺便说一下,name
不是
元素上的有效属性。它只能用于以下元素:
,,,,,,
请参见这里是纯javascript与主流浏览器的结合
var ol = document.getElementsByTagName('ol');
var temp = ol.getElementsByClassName('template');
for(var i=0;i<temp.length;i++){
if(temp[i].name.indexOf('Works')==0){ // if name attribute start with 'Work'
//if(temp[i].name.indexOf('Works') > -1){ => if name attribute contains 'Work'
//if(temp[i].name.indexOf('Works') == -1){ => if name attribute is not contains 'Work'
//if(temp[i].name.indexOf('Works') == temp[i].name.length - 'Works'.length - 1){ => if name attribute is ended with 'Work'
// now play with with temp[i]
temp[i].style.background = 'yellow';
}
}
var ol=document.getElementsByTagName('ol');
var temp=ol.getElementsByClassName('template');
对于(var i=0;i-1){=>如果name属性包含“Work”
//if(temp[i].name.indexOf('Works')==-1){=>if name属性不包含'Works'
//if(temp[i].name.indexOf('Works')==temp[i].name.length-'Works.length-1){=>if name属性以'Work'结尾
//现在使用temp[i]
temp[i].style.background='yellow';
}
}
JavaScript尝试在哪里?谢谢!!我们能为每个模板都获得这个吗。例如,我想循环每个模板。你可以在任何时候使用它来查找具有相同开头属性的所有元素。你是说$(this)。find(“[name^=Works]”)吗?是的,这适用于查找当前元素下的所有模板元素。