2011-02-01 18 views
1

私はhtmlとしていくつかのデータを取得するajax関数を持っています。jQuery - html文字列内の要素を非表示にする

このHTML文字列から特定の要素を非表示にするにはどうすればよいですか? $(data).find(".element").hide()は動作しません...

+0

hideとはどういう意味ですか?文書にHTMLを追加しましたか?そうでなければ、内側のhtmlノードを隠そうとする前に*行う必要があります。 –

+0

後でもう一度保管していますか?データの内容を見て、要素がその中に配置可能であることを確認することができます。 – Orbling

+1

@ティモシー真実ではない。 http://jsfiddle.net/stodolaj/4X4RY/ –

答えて

4

本当にうまくいかないのですか?よくある間違いは、文字列自体が変更されていると仮定することです。

代わりにこれを試してみてください:

var $data = $(data); // create new DOM elements, and keep a reference to them 
$data.find(".element").hide(); // find and hide .element 
$data.appendTo('wherever'); // append the new elements 

別の可能性は.elementトップレベルに返されたHTMLののであるということです。

この場合、find()(docs)メソッドの代わりにfilter()(docs)メソッドが必要です。しようとする

var $data = $(data); // create new DOM elements, and keep a reference to them 
$data.filter(".element").hide(); // filter and hide .element 
$data.appendTo('wherever'); // append the new elements 

最後は.find()をやって、その後、<div>要素で全体のHTMLを包むことになります。

// var $data = $('<div>' + data + '</div>'); // original version 
var $data = $('<div>').append(data); // this may be better. not sure. 
$data.find(".element").hide(); 
$data.children().appendTo('wherever'); 
+0

大変ありがとうございます(psは 'filter()'のバージョンのみです) – Alex

+1

+1完全な答えを得るには、私を打ち負かしました;) –

+0

@Alexandra:どうぞよろしくお願いします。つまり、 '.element'はネストされていません。 '.find()'メソッドは、その要素の子孫を一番上に見るだけです。私は最後の解決策がうまくいかないと少し驚いています。私はそれをより良い解決策に変えようとします。 – user113716