2012-02-26 19 views
1

オブジェクト(jQueryオブジェクトではありません)を受け入れ、内部がプロパティinnerHTMLです。これは起こっていることのスニペットです。jqueryでオブジェクトのinnerHTMLプロパティの要素を選択する方法

function addToPluginList(thePlugin){ 
      /* Example of what is being passed in: 
      * thePlugin.innerHTML = "<h3>WP-Members</h3><span class="author"><a href="http://butlerblog.com/">Chad Butler</a></span><span class="slug">wp-members</span><span class="version">2.7.2</span><span class="description">WP-Members™ is a free membership management system for WordPress® that restricts content to registered users.</span>" 
      * Need to pull out the elements inside so they can be easily accessed. 
      * 
      **/ 
      thePlugin.version = $('.version', $(thePlugin.innerHTML)); 
      thePlugin.slug = $('.slug', $(thePlugin.innerHTML)); 
      console.log(thePlugin); // no dice 
     } 

私はいくつかの方法を試してみましたが、最終的に私が取得することはこれですしている:thePlugin.version = '、

期待されているものを
version: e.fn.e.init[0] 
slug: e.fn.e.init[0] 

そしてません(thePlugin.slug =' WP-メンバー0.2)

どうやってこれをやりますか?

おかげ

答えて

0

だから、問題は、ルートレベルの要素を無視してfind()メソッドに関連すると思われます。 divにinnerHtmlをラップすることにより、セレクタは期待どおりに動作します。

function addPlugintoList(thePlugin){ 
    var elements = $('<div>' + thePlugin.innerHtml + '</div>'); 
    thePlugin.version = $('.version', elements).text(); 
    //this is equivalent to elements.find('.version').text(); 
    thePlugin.slug = $('.slug', elements).text(); 
} 

addPlugintoList(pluginObject); 

console.log(pluginObject.version); 
console.log(pluginObject.slug); 

例:​​3210

オブジェクト自体は、この仕事を持つためのいくつかの他の興味深い可能性もあります。

http://jsfiddle.net/DX3TT/9/ - これは値をバインドするためのパブリックメソッドのための一般的なプロトタイプを示しています。

http://jsfiddle.net/DX3TT/10/ - これは、派生型を作成し、ctorでバインディングを行うためのプロトタイプを使用して表示されます。

+0

ありがとう、ゲーリー、あなたの解決策は働いた。私は決してそれを働かせなかったでしょう。 – Simon

関連する問題