2016-11-20 17 views
-1

各リスト要素の中にテキスト入力要素があります。ターゲットのリスト要素の入力要素を表示します。.show()が動作していないjQuery

まず、すべてのリスト要素を選択するallElを定義し、配列になります。次に、すべてのallEl要素を ''のクラス名に設定します。次に、イベントのターゲット要素を選択します。また、ターゲットとなるリスト要素のインデックス番号を見つけるために使用されるselElも定義します。次に、すべてのリスト要素をループし、どちらがターゲット要素であるかを確認します。ターゲットの要素のクラスを「アクティブ」に設定し、そのリスト要素のインデックス番号を記録します。それから私はすべての入力要素を隠しました。私は隠された入力要素のすべてを見つけて$ hidを代入します。これは今配列になります。次に、selElを使用して、ターゲットのリスト要素からinput要素を表示します。

何らかの理由で入力要素が表示されず、$ hid [selEl] .showが関数ではないというTypeErrorがあります。

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でラップされた要素を与えます。一例として、このページを使用して

$('span') ==> n.fn.init[163] 
$('span')[1] ==> <span class=​"rep-score">​1,806​</span>​ 
$('span').eq(1) ==> [span.rep-score] 

あなたは、むしろその要素を表しjQueryオブジェクトに比べて、素子の上に.SHOW()jQueryのメソッドを使用しようとしています。

関連する問題