2015-09-18 4 views
0

Этот вопрос касается плагина jQuery XPath Сергея Ильинского. У меня есть xml-файл, который я просматриваю через этот плагин. Сам файл не важен для просмотра. Вопрос больше связан с функциональностью плагина.jQuery атрибут настройки плагина XPath

 var elemList = $(xmlDoc).xpath("call-script/option" + xpathExtension); 
     for (var i = 0; i < elemList.length; i++) { 
      if (elemList[i].getAttribute('text') != null) { 
       alert(elemList[i].getAttribute('text')); 
       //elemList[i].getAttribute('text') = 'example'; 
      } 
     } 

Я хотел бы установить текст атрибут выбранного узла, как показано на закомментированного линии. getAttribute работает как шарм, когда я использую его только для чтения. Я хотел бы присвоить ему какую-то функцию setAttribute, которая недоступна. Любая помощь от вас была бы очень признательна. ссылка

писать софт: версия http://plugins.jquery.com/xpath/

писать софт: 0.2.4

Edit: Я думаю, что я должен поделиться частью моего XML, чтобы дать лучшее понимание.

<?xml version="1.0"?> 
<call-script say="Good morning"> 
    <option text="caller asks for blah"> 
    ... 
     ... 
    ... 
    </option> 
    <option text="caller requests blah"> 
    ... 
     ... 
    ... 
    <option text="caller would like to blah"> 
    ... 
     ... 
    ... 
    </option> 
</call-script> 

ответ

0

Похоже есть setAttribute функция, а также.

elemList[i].setAttribute('text','example'); 

Это устранило мою проблему. Извините за то, что беспокоило вас.

Ссылка на учебное пособие: http://www.w3schools.com/xml/met_element_setattribute.asp

0

У вас уже есть JQuery, так что вы можете быть немного более эффективным, если вы используете .attr() функцию JQuery, которая делает двойную обязанность и как геттер и сеттер в зависимости от аргументов. Здесь также может использоваться функция $.each().

Переписывая ваш образец:

$.each(elemList, function(key, element) { // iterate over each thing in elemList 
    if (element.attr('text') !== null) { // without 2nd argument, just returns the value 
     alert(element.attr('text')); // same 
     element.attr('text', 'example'); // with 2nd argument, sets the value 
    } 
}); 

http://api.jquery.com/attr/

+0

Мне нравится подход. Однако он дает ошибку «element.attr is not function». Xml, который я анализирую, не является html. –