Javascript 如何遍历子对象的属性并将其重命名为Jquery?

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

我有这个标记。我正在尝试编写jquery选择器,以获取模板顺序列表中名称为Works字符串的所有元素。我的要求是我有多个有序列表。若我要删除任何列表,我想在名称属性中重新排列索引

<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]”)吗?是的,这适用于查找当前元素下的所有模板元素。