2016-07-12 23 views

答えて

2

考慮に入れるべき二つのものがあります:

  1. filterは、それが呼び出されたjQueryオブジェクトを変更します。あなたの場合、それはaを保持し、親divを削除します。代わりにfindを使用してください。 findは元のものを変更せずに新しいjQueryオブジェクトを返します。
  2. しかし、呼び出しチェーンの結果をDOMに直接挿入することはできません。 find新しいaのみを含むjQueryオブジェクトを返します。親を保持する場合は、最初のjQueryオブジェクトを挿入する必要があります。div

var myhtml = "<div><a>DEMO</a></div>"; 
 
// Parse the string into a jquery object. 
 
var $myhtml = $(myhtml); 
 
// Add the "testing" class to the `a` child(ren). 
 
$myhtml.find("a").addClass("testing"); 
 
// Add a class to the root of $myhtml (i.e. the `div`) if needed. 
 
$myhtml.addClass("div-class"); 
 
// Append the jquery object. 
 
$("body").append($myhtml);
.testing { 
 
    background-color: yellow; 
 
} 
 
.div-class { 
 
    padding: 5px; 
 
    border-style: solid; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

ありがとうございました。複数の変更をどうやって行うのですか?たとえば、div要素にクラスを追加するにはどうすればよいですか? – guub

+0

'div'要素はjQueryオブジェクトのルートですので、' $ myhtml'に 'addClass'を使うだけです。 –

+0

私の編集を見てください。 –

1

のdivで、)=

var myhtml = "<div><a>DEMO</a></div>"; 
$("body").append($(myhtml).find('a').addClass("testing")) 

[OK]をお楽しみください:

var myhtml = "<div><a>DEMO</a></div>"; 
var $div = $(myhtml); 
$div.find('a').addClass("testing"); 
$("body").append($div); 

幸運!

+1

このコードは 'a'だけを追加します。 'div'が削除されます。 –

+0

または単にクラステストを "a"に追加し、body全体をdivに追加したいですか? –

+0

私はfindを使用しようとしましたが、返されるのは「a」だけですが、残りのHTMLは返されません – guub

関連する問題