.show()不能正常运行jQuery

时间:2016-11-20 00:18:50

标签: javascript jquery

每个列表元素中都有一个文本输入元素。我想显示目标列表元素的输入元素。

首先,我定义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();

2 个答案:

答案 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()方法。