Как выбрать элемент в свойстве innerHTML объекта с помощью jquery - PullRequest
1 голос
/ 26 февраля 2012

У меня есть функция, которая принимает объект (не объект 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 голосов
/ 26 февраля 2012

Таким образом, проблема, похоже, связана с методом 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.

...