在Jquery中输出特定索引的HTML

时间:2017-02-14 15:04:23

标签: jquery arrays

我遇到了jquery的问题。

我希望在输入字段的特定数组索引上输出HTML。

<tr>
<td><input type="text" name="ean[]">
<input type="text" name="serial[]">
</td>
<td class="article[]"></td>
</tr>

$('input[name^="ean"]').change(function(event) {
   var index = $('input[name^="ean"]').index( this );
   $('.article:eq(index)').html("test");
});

目标是,在输入字段(ean)发生更改后,jquery会在索引(类文章)上放置特定值。

使用此代码,当前更改的索引没有输出。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

使用eq()方法或连接索引值。

$('input[name^="ean"]').change(function(event) {
   var index = $('input[name^="ean"]').index( this );
   $('.article\\[\\]').eq(index).html("test");
});
$('input[name^="ean"]').change(function(event) {
   var index = $('input[name^="ean"]').index( this );
   $('.article\\[\\]:eq(' + index + ')').html("test");
});

虽然它总是更好地缓存jQuery对象以供将来使用。

var $art = $('.article\\[\\]');
var $inp = $('input[name^="ean"]').change(function(event) {
   var index = $inp.index(this);
   $art.eq(index).html("test");
});

仅供参考:类名最后包含[],因此您需要将其包含在选择器中,但由于方括号具有特殊含义,因此您需要将它们都包含在内。

或者,从类名中删除[]并像往常一样使用它,我个人更喜欢这个。

<tr>
<td><input type="text" name="ean[]">
<input type="text" name="serial[]">
</td>
<td class="article"></td>
</tr>

var $art = $('.article');
var $inp = $('input[name^="ean"]').change(function(event) {
   var index = $inp.index(this);
   $art.eq(index).html("test");
});

答案 1 :(得分:0)

感谢您的快速回复。

不幸的是,它不起作用。

我使用适当的类名测试了td字段:

$('td[class^="article"]').html('test');

当然,有了它,它会对所有位置进行“测试”。

尝试后
$('.article:eq(' + index + ')').html("test");

没有输出。

如果我尝试标记修复索引,也没有输出,例如

$('.article:eq(0)').html("test");

eq和我使用过的jquery版本(1.10.3)有问题吗?