我有一张表,在每一行中都有一个td标签中的组合框,我想当组合框改变时,下一个td的内容会发生变化
我写了这段代码,但它不起作用:
$(document).ready(function () {
$('#table tr td').find('.combobox').change(function () {
var myvar=$(this).val();
$.post("./data.php", {
p_array : myvar,
}, function(data) {
$(this).parent().next('td').html(data);
});
});
});
表格结构:
<table>
<tr>
<td>
<select class="combobox">
<option>
select something
</option>
</select>
<td>
<td>must be changed</td>
<tr>
</table>
问题是什么?
答案 0 :(得分:1)
this
在发布之前不是this
...最简单的解决方案是:
$(document).ready(function () {
$('#table tr td').find('.combobox').change(function () {
var myvar=$(this).val();
var xthis = this;
$.post("./data.php", {
p_array : myvar,
}, function(data) {
$(xthis).parent().next('td').html(data);
});
});
});
答案 1 :(得分:1)
当你使用它时,你最好将它缓存在像Flash这样的变量中。 因为这具有另一种含义,当它在另一个范围内时。 你也可以更好地使用最接近元素,所以你确定你有下一个td参考。
$(document).ready(function () {
$('#table tr td').find('.combobox').change(function () {
//cache it as soon as possible for performance reasons and readability
var $this =$(this);
var myVar = $this.val();
$.post("./data.php", {
p_array : myvar,
}, function(data) {
$this.closest('td').next('td').html(data);
});
});
});