IE8对象不支持方法..." .closest()"

时间:2015-04-11 22:05:00

标签: jquery closest

讨厌所有必须简单的事情,但我不断从以下代码获得IE8不支持的属性或方法错误。在FireFox中工作正常。

    compName = comps[index].getElementsByTagName("compName")[0].firstChild.nodeValue;
    compDesc = comps[index].getElementsByTagName("description")[0].firstChild.nodeValue;
    nextCluster = comps[index].closest("skillCluster").getElementsByTagName("skillName")[0].firstChild.nodeValue;

    <factor>
        Gets Results
    </factor>
    <skillCluster>
        <skillName>
            Works Effectively and Efficiently
        </skillName>
        <competency id="25">
            <compName>
                Plans and Aligns
            </compName>
            <description>
                Planning and prioritizing work to meet commitments aligned with organizational goals.
            </description>
        </competency>
        <competency id="27">
            <compName>
                Resourcefulness
            </compName>
            <description>
                Securing and deploying resources effectively and efficiently.
            </description>
        </competency>
    </skillCluster>

第三行包含错误。 Array / nodelist comps []是以前在XML doc中搜索“competency”标签的结果。显示了本地XML的结构。除了.closest()之外,逐步删除行的所有其他部分至少返回一个对象(通过警报)并且没有错误。其他部分compName和compDesc工作正常。在所有情况下,我都在文本内部。任何帮助,总是非常感谢!

1 个答案:

答案 0 :(得分:1)

closest方法是一个jQuery方法,因此您需要创建一个包含要使用它的元素的jQuery对象。结果是另一个jQuery对象,所以你需要一个[0]来从中获取元素:

nextCluster = $(comps[index]).closest("skillCluster")[0].getElementsByTagName("skillName")[0].firstChild.nodeValue;