Javascript 如何删除特定的<;td>;使用jquery动态添加表中没有id的单元格?

Javascript 如何删除特定的<;td>;使用jquery动态添加表中没有id的单元格?,javascript,jquery,html,html-table,Javascript,Jquery,Html,Html Table,该表包括一个下拉框和一个带值的普通。当更改下拉列表的onChange时,特定的必须更改为另一个下拉列表。我已经使用jQuery实现了这个函数,但是当我更改第一行的下拉列表时,整个表都发生了更改。我只需要对调用了onChange函数的单行进行更改 $('td:nth-child(11),th:nth-child(11)').hide(); $('td:nth-child(10),th:nth-child(10)').show(); 用于隐藏和显示第10列和第11列 doc.ready函数():

该表包括一个下拉框和一个带值的普通
。当更改下拉列表的
onChange
时,特定的
必须更改为另一个下拉列表。我已经使用jQuery实现了这个函数,但是当我更改第一行的下拉列表时,整个表都发生了更改。我只需要对调用了
onChange
函数的单行进行更改

$('td:nth-child(11),th:nth-child(11)').hide();
$('td:nth-child(10),th:nth-child(10)').show();
用于隐藏和显示第10列和第11列

doc.ready函数():

使用的onChange函数:

$(document).on('change','.mySelect', function(event) {
  event.preventDefault();

  $('td:nth-child(11),th:nth-child(11)').hide();
  $('td:nth-child(10),th:nth-child(10)').show();
  //$(this).closest("td").show();

  var _this = $(this);
  var id =_this.val();
  var statusValue = id;

  $.get('AssignedTo', { statusVal : statusValue }, function(response) {
    var select = _this.closest("tr").find("select[name='assigned']");
    /* var select = $('#assigned'); */
    select.find('option').remove();

    $.each(response, function(index, value) {
      $('<option>').val(value).text(value).appendTo(select);
    });
  });
});
$(文档).on('change','.mySelect',函数(事件){
event.preventDefault();
$('td:nth child(11),th:nth child(11)').hide();
$('td:nth child(10),th:nth child(10)').show();
//$(this.closest(“td”).show();
var_this=$(this);
var id=_this.val();
var statusValue=id;
$.get('AssignedTo',{statusVal:statusValue},函数(响应){
var select=_this.closest(“tr”).find(“选择[name='assigned']”);
/*变量选择=$('分配')*/
select.find('option').remove();
$.each(响应、函数(索引、值){
$('').val(值).text(值).appendTo(选择);
});
});
});

< /代码> 而不是使用<代码>第n个子< /代码>,考虑使用<代码> Eq-()/<代码>它更干净,不与<代码>第n个子< /代码>的某些特殊性有关。

  • 要获取“已更改”行中的所有
    元素,您可以通过执行
    .closest(“td”)
    来获取父级
    ,并使用
    选择其所有同级

  • 要包含原始版本(而不仅仅是兄弟版本),您需要使用
    .addBack()

  • 最后,现在我们有了行中的所有单元格,请使用
    eq()
    选择所需的单元格

综上所述,它看起来是这样的:

//Select the 11th cell in the row
var $cell = $(this).closest('td').siblings('td').addBack().eq(10);
或者,您可以使用
.closest(“tr”)
children()
,获取父项并选择其所有子项(而不是兄弟项):


如果您试图获取
所在的
,您可以使用jQuery通过
$(this.recest(“tr”))选择它
更改
事件中
closest()
将返回与给定选择器匹配的最近祖先,因此在您的情况下,它将匹配最近的父/祖父母/等,即
。请尝试
$(this).closest('tr')。find('td:nth child(11),th:nth child(11)'
-这是更改的select中最接近的tr,然后在该行中找到tds您最好使用jQuery中的
.eq()
,而不是
第n个子项。尝试类似于
$(this.closest('tr').find('td').eq(10)的方法
$(this).最近的('td')。同级('td')。addBack().eq(10)
-或者代替th和td的选择器,正如santi所说,您可以只在子对象上执行eq
$(this).closest('tr').children().eq(10)
-eq是基于0的索引,因此10是第11个子对象。您应该真正包含HTML。堆栈上的示例通常要求是完整的和可验证的,但只有jQuery,您的问题既不是。我们几乎都在抓救命稻草,而看不到我们想要选择什么,等等。
//Select the 11th cell in the row
var $cell = $(this).closest('td').siblings('td').addBack().eq(10);
//Select the 11th cell in the row
var $cell = $(this).closest("tr").children("td").eq(10);