0

一連の DIVS を構築しており、それぞれに「div1」、「div2」などの構文で ID が割り当てられているシナリオがあります。

divはすべて正常に表示され、IDがすべて適切に割り当てられていることがわかります...

次のコードを使用して、(ID が渡された場所で) クリックして、対応する div の表示を切り替えられるようにしようとしています。

$("#page-wrap li a").click(function(id){
 var thisid = ('#'+$(this).attr('id').toString());
 alert(thisid);
 document.getElementById(thisid).hide();
}

しかし、エラー コンソールは、getelementbyid に null 値があることを示しています。

私は何が欠けていますか?thisid 変数を強制的に文字列にしようとしましたが、それもうまくいきませんでした。

誰かが私のためにこれを当てることができる光をありがとう。

4

3 に答える 3

1

jQuery と標準の DOM メソッドを混在させていますか?

代わりに、次のようなものが機能するはずです。

マークアップを考えると:

<a href="#someDiv">Hide the div</a>
<div id="someDiv">DIV to be hidden</div>


$("a").click(function(e){
  e.preventDefault(); // prevents page reload
  $($(this).attr('href')).hide();
});
于 2012-12-13T03:08:45.757 に答える
0

プレーンな dom 呼び出しと jQuery を混在させているようです。一貫性を保つために、これを試してください:

$("#page-wrap li a").click(function(id){
    var thisid = ('#'+$(this).attr('id'));
    alert(thisid);
    $(thisid).hide();
});
于 2012-12-13T03:07:56.043 に答える
0

<div><a>タグの両方で同じ ID を使用しないでください。代わりに、<div>アンカーの via データ属性のID を渡すことができます。

<div id="div2">this is div2</div>
<a href="#" data-id="div2">click here to hide div2</a>

次に、クリック ハンドラーは次のようになります。

$('a').click(function() {
  // $(this).data('id') == "div2"
  $(document.getElementById($(this).data('id'))).hide();
  return false;
});
于 2012-12-13T03:10:14.327 に答える