当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery

traverse to element when knowing at least one in same hiearch. structure using jquery

本文关键字:元素 遍历 结构 jquery 有一个 hiearch      更新时间:2023-09-26

我有以下html结构

<tr>       
   <td>
      <input class="check-box" type="checkbox" disabled="disabled"    checked="checked">
   </td>
   <td> </td>
   <td> </td>
   <td> </td>
   <td> </td>
   <td>
      <a href="/data/Edit/1">Edit</a>|
      <a href="/data/Details/1">Details</a>|
      <a href="/data/Delete/1">Delete</a>|
      <a id="myAction_1" onclick="myAction(1)">TakeAction</a>
    </td>
</tr>
function myAction(someId){
        $.ajax({
            method: "POST",
            dataType:'text',
            url: "/mydata/someaction/",
            data: { id: someId}
        }).done(function( msg ) {                
            $("#myAction_"+someId).text(msg);  
            // change checkbox here value to check or unchecked          
        });
    }

如何在myAction in done方法中遍历到知道#myAction_"+someId的复选框元素,而不为复选框id分配显式id。

试试这个:

var checkboxElement = $("#myAction_"+someId).closest("tr").find("td:eq(0) > input[type='checkbox']")

您可以使用closest方法查找表行,然后从中查找输入。您可以使用对当前元素的引用而不是标识:

<a id="myAction_1" onclick="myAction(this)">TakeAction</a>

然后在函数中使用:

function myAction(element){
    $.ajax({
        method: "POST",
        dataType:'text',
        url: "/mydata/someaction/",
        data: { id: someId}
    }).done(function( msg ) {                
        $("#myAction_"+someId).text(msg);  
        var check = $(element).closest('tr').find('input[type=checkbox]');
        check.prop('checked', true); // make the checkbox checked
    });
}