2011-03-17 17 views
4

jQuery Infinite Carouselでは、無限の効果を行うには.clone()を使用します。クローンを作成するコードにHTML5要素が含まれていない限り、これは素晴らしいことです。 IE7とIE8はHTML5要素固有のCSSルールを適用して、挿入された要素のクローン化またはポストページロードに問題があります。jQueryオブジェクトの配列をHTML文字列に変換する方法

innerShiv JavaScriptプラグインは、IE7とIE8が適切なCSSで正しくレンダリングする方法で要素を挿入します。

問題は、innerShivはHTML文字列をパラメータとして取りますが、jQueryの.clone()メソッドはjQueryオブジェクトの配列を返します。

2つを一緒に使用するには、.clone()の出力をinnerShivが解析できるHTML文字列に変換する必要があります。

どのようにこれを行うことができますか?

+3

ちょうど[ '.htmlを()'](HTTPを呼び出します。 //api.jquery.com/html/)をオブジェクトに貼り付けますか? –

答えて

8

HTML:

<p class="foo"><canvas class="bar"></canvas></p> 

はJavaScript:[Ref]

// grab the object, with HTML 5 element(s). 
var p = $('p'); 

// clone it 
var c = p.clone(); 

// grab the inner html (wrap it so we can get the HTML) 
var html = $('<div>').append(c).html(); 

// alert us of the contents 
alert(html); 

デモ:

http://jsfiddle.net/bradchristie/tDFYn/

+0

Brilliant!これは完全に機能しました! – Jazzerus

0

.clone().html();を使用すると、オブジェクトが文字列に変換されます。 )(実際@Jazzerus、なぜ使用.clone:http://jsfiddle.net/9k2LS/

-edit-

再考: を見てみましょうか? clone()を使わないで.html()を実行します。

+0

'.clone'が' .clone'を使わない '.html()'は、現在のオブジェクトと祖先を複製しますので、技術的には行いません。 '.html()'は祖先のコードだけです。 –

関連する問題