如何使用jquery在对象的innerHTML属性中选择元素

时间:2012-02-26 19:25:04

标签: 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
        }

我尝试了几种方法,但最终得到的是:

version: e.fn.e.init[0]
slug: e.fn.e.init[0]

而不是预期的(thePlugin.slug ='wp-members',thePlugin.version ='0.2)

你会怎么做?

由于

1 个答案:

答案 0 :(得分:0)

因此问题似乎与忽略根级别元素的find()方法有关。通过将innerHtml包装在div中,选择器开始按预期工作。

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);

示例:http://jsfiddle.net/DX3TT/2/

还有一些其他有趣的可能性让对象本身可以完成这项工作:

http://jsfiddle.net/DX3TT/9/ - 这显示了绑定值的公共方法的一般原型。

http://jsfiddle.net/DX3TT/10/ - 这将显示使用原型设计创建派生类型并让它在ctor中进行绑定。