我有

<table class="prodtable">
<tr>
 <td></td>
 <td>
     <input class="editok" value="2" />
 </td>
 <td>
  <input name="prodnumber" value="1" />
  <i></i>
 </td>
</tr>
</table>


和这个js

$('.prodtable').on('blur','.editok',function(){
   var neuanzahl = $(this).val();
   $(this).parent('td').text(neuanzahl);//<-- till here works fine
   $(this).parent('td').next().find('input').val(neuanzahl);//<-- from here, failure
   $(this).parent('td').next().find('i').addClass('icon-pencil');
});


editok输入是动态插入的,这就是为什么我要从父表设置处理程序。

我的问题是,在模糊事件上,给定输入的值应放在名称为td的下一个prodnumger中的下一个输入中,并且<i>应该得到类icon-pencil

我现在尝试了1个小时,真是太遗憾了。我在这里做错了什么?

最佳答案

这条线

$(this).parent('td').text(neuanzahl);


替换TD中的所有内容,因为这是text()所做的,它将覆盖所有内容,因此在执行下一步时

$(this).parent('td').next().find('input') ...


没有this,您只需使用text()将其删除

仅链接而不是使用多行将保留引用

$('.prodtable').on('blur','.editok',function(){
   var neuanzahl = this.value;

   $(this).parent('td')
          .text(neuanzahl)
          .next('td')
          .find('input')
          .val(neuanzahl)
          .next('i')
          .addClass('icon-pencil');
});


FIDDLE

关于javascript - jQuery next()无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25161528/

10-12 16:28