Javascript Jquery next()不工作
我有Javascript Jquery next()不工作,javascript,jquery,Javascript,Jquery,我有 这是js <table class="prodtable"> <tr> <td></td> <td> <input class="editok" value="2" /> </td> <td> <input name="prodnumber" value="1" /> <i></i> </td> </tr>
这是js
<table class="prodtable">
<tr>
<td></td>
<td>
<input class="editok" value="2" />
</td>
<td>
<input name="prodnumber" value="1" />
<i></i>
</td>
</tr>
</table>
$('.prodtable')。在('blur','.editok',函数()上{
var neuanzahl=$(this.val();
$(this).parent('td').text(neuanzahl);//此行
$('.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');
});
替换TD中的所有内容,因为这就是text()
所做的,它会覆盖所有内容,所以在下一行中执行此操作时
$(this).parent('td').text(neuanzahl);
没有此
,您只需使用text()将其删除。
只是链接而不是使用多行将保留引用
$(this).parent('td').next().find('input') ...
您的表格打开标记拼写不正确,这可能是您遇到困难的原因。在您调用$(this).parent('td').text(…)
)时,您已经从其父项中删除了输入。因此,以下调用中的$(this).parent('td')
将不匹配任何内容
在开始时保存该td
,并在整个过程中使用它:
$('.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');
});
示例:是将下一个div的引用存储在变量中
$('.prodtable').on('blur','.editok',function(){
var neuanzahl = $(this).val();
var td = $(this).parent('td');
td.text(neuanzahl);
td.next().find('input').val(neuanzahl);
td.next().find('i').addClass('icon-pencil');
});
代码的问题是当$(this).parent('td').text(neuanzahl)时
对的引用此
已丢失,因为您已将内容替换为td
您尚未关闭
,并且开始元素为tabe而不是table@MikeCheel不,这只是一个发布错误。在原始代码中,html是完美的。我只是从第一个输入的td中删除它。我正在尝试输入下一个td中的第二个输入。.next()
应该转到下一个td,它仍然有输入,对吗?是的,它应该,可能会发布一个示例来说明问题help@doniyor执行.text()
时,它将替换表格单元格中的所有内容,因此在下一行$(此)
已经不存在了。这不是问题所在。next()
td
确实有一个输入,但是没有$(this.parent()
这样的东西,因为这个
是另一个输入
,当text()时,它刚刚从DOM中删除调用了
-参见我的答案/示例。保罗,看,我使用的是.next()
哪个应该转到下一个TD,它仍然有inputfield,对吗?你使用的是$(this)。parent('TD').next()
,但是$(this)。parent('TD')
不再有任何意义,所以next()
对你没有任何好处。我在这里做同样的事情,基于相同的td
,只是不想把它作为不再存在的输入的父项。哦,好吧。我想,一旦我有了对象,text()
无法删除它,但它显然可以删除。谢谢Paul。这是一次有趣的旅程。因此,即使在text()
ing之后,我仍有一些工作要做,对吗?是的,如果您想执行进一步的操作。
$('.prodtable').on('blur', '.editok', function () {
var td = $(this).parent('td');
var next = $(this).parent('td').next(); //Store reference of next div in a variable
var neuanzahl = $(this).val();
td.text(neuanzahl);
next.find('input').val(neuanzahl);
next.find('i').addClass('icon-pencil');
});