2012-02-26 1 views
1

У меня есть функция, которая принимает объект (а не объект jQuery), а внутри - свойство innerHTML. Это фрагмент того, что происходит.Как выбрать элемент в свойстве innerHTML объекта с jquery

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-членов', thePlugin.version = ' 0,2)

Как бы вы это сделали?

Благодаря

ответ

0

Таким образом, проблема, как представляется, связана с методом игнорирования находки() элементами корневого уровня. Упаковывая 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.

+0

Спасибо, Гэри, ваше решение сработало. Я бы никогда не сработал. – Simon

Смежные вопросы