jQuery XPath插件设置属性

时间:2015-09-18 00:39:24

标签: javascript jquery xml xpath

这个问题是关于Sergey Ilinsky的jQuery XPath插件。我有一个xml文件,我通过这个插件导航它。文件本身并不重要。问题与插件的功能更相关。

        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';
            }
        }

我想设置所选节点的 text 属性,如注释掉的行所示。 getAttribute当我仅将其用于阅读目的时,就像一个魅力。我想为它分配某种setAttribute函数,该函数不可用。非常感谢您的任何帮助。

插件的链接:http://plugins.jquery.com/xpath/

插件版本:0.2.4

编辑:我想我应该分享一部分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>

2 个答案:

答案 0 :(得分:0)

你已经拥有了jQuery,所以如果你使用jQuery的.attr()函数可以提高效率,它可以作为getter和setter的双重任务,具体取决于参数。此处也可以使用$.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/

答案 1 :(得分:0)

看起来还有setAttribute功能。

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

这解决了我的问题。抱歉打扰你。

教程链接:http://www.w3schools.com/xml/met_element_setattribute.asp