2016-11-20 107 views
-1

每個列表元素中都有一個文本輸入元素。我想顯示目標列表元素的輸入元素。.show()不起作用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(); 

回答

0

你應該改變最後一行:

$hid.eq(selEl).show(); 

.eq()jQuery方法返回一個jQuery對象。

[]表示法返回普通的DOM節點。並且DOM節點沒有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對象上。