0.id为null或不是对象,parentElement的parentElement和ie8

0.id is null or not an object, parentElement of the parentElement and IE 8

本文关键字:parentElement ie8 对象 id null      更新时间:2023-09-26

我使用以下3行代码在我的web应用程序。

selected_build = event.currentTarget.parentElement.parentElement.id;
var jselect = $( "#" + selected_build + " .roomc" ).children(".room");
selected_room = jselect[0].id;

这在大多数浏览器中都有效,但在ie8中我得到错误

 '0.id' is null or not an object

指向第三行代码。我认为这与parentElement只在元素上工作有关,但我似乎无法弄清楚。

我认为这与parentElement只在元素上工作有关…

如果IE8没有parentElement,因为根据定义你处理的是event.currentTarget的元素,你可以安全地使用parentNode来代替。

但是当你使用jQuery 无论如何,为什么不…使用jQuery吗?

selected_build = $(event.currentTarget).parent().parent().attr("id");
if (selected_build) {
    var jselect = $("#" + selected_build + " .roomc").children(".room");
    selected_room = jselect.attr("id");
    if (selected_room) {
        // ... use it
    }
}

请注意,我使用.attr("id")来获得id。这是因为如果jQuery集合为空.attr("id")给出的是undefined,而[0].id给出的是错误。


和actually 本;除了在selected_room:

的末尾,你根本不需要使用id s。
selected_room =
    $(event.currentTarget)
        .parent().parent()
        .find(".roomc > .room")
        .attr("id");
if (selected_room) {
    // ... use it
}

…我敢打赌,肯定有办法把事件联系起来,这样我们就可以避免脆弱的.parent().parent()。但如果没有看到结构,就不可能提出什么建议。