我有一个接受一个对象(不是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)
你会怎么做?
由于
答案 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中进行绑定。