每个列表元素中都有一个文本输入元素。我想显示目标列表元素的输入元素。
首先,我定义allEl,它选择所有列表元素,现在是一个数组。然后我将所有allEl元素设置为''的类名。然后我选择事件的目标元素。我还定义了selEl,它将用于查找目标列表元素的索引号。然后我循环遍历所有列表元素并检查哪一个是目标元素。我将目标元素的类设置为“活动”并记录该列表元素的索引号。然后我隐藏了所有的输入元素。然后我找到所有隐藏的输入元素并为其分配$ hid,现在它将是一个数组。然后我使用selEl来显示目标列表元素的输入元素。
但由于某种原因,输入元素不会显示,并且有一个TypeError说$ hid [selEl] .show不是函数。
var allEl = document.getElementsByTagName('li');
for(var i = 0; i < allEl.length; i++) {
allEl[i].className = '';
}
var target = e.target;
var selEl;
$("input:text").hide();
for(var i = 0; i < allEl.length; i++) {
if(target === allEl[i]) {
target.className = 'active';
selEl = i;
}
}
var $hid = $("input:text:hidden");
$hid[selEl].show();
答案 0 :(得分:1)
$ hid [selEl]是元素本身。 $('span')。eq(selEl)会在selEl位置给你jquery-wrapped元素。
以此页面为例,
$('span') ==> n.fn.init[163]
$('span')[1] ==> <span class="rep-score">1,806</span>
$('span').eq(1) ==> [span.rep-score]
您尝试在元素上使用jQuery方法.show(),而不是在表示该元素的jQuery对象上。
答案 1 :(得分:0)
您应该将最后一行更改为:
$hid.eq(selEl).show();
.eq()
是jQuery
方法,可返回jQuery
个对象。
[]
表示法返回纯DOM节点。 DOM节点没有show()
方法。