jquery类选择器在IE6中不起作用

时间:2011-07-01 05:14:12

标签: jquery jquery-selectors internet-explorer-6

Eidt:谢谢大家,对不起我的粗心。 initTree()失败。

这适用于FF和Chrome:

$("#tree").treeview({
    collapse:false,
});

这适用于FF Chrome和IE6:

$("#tree").treeview({
    collapse:false  //<-here is the key, no comma
});

我有一棵树:

<ul id="tree">
    <li>Root
        <ul>
            <li>Node_1_2<a class='addnode'>add</a><a class='deletenode'>delete</a>
                <ul>
                    <li>Node_2_4<a class='addnode'>add</a><a class='deletenode'>delete</a></li>
                    <li>Node_2_6</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

如果我单击<a>add</a>,它应该将chid节点附加到该元素。类似的东西:

$("a.addnode").live("click", function() {
    if($(this).parent().children("ul").html() == null){
        leafHtml = ...;
        $(this).parent().append(leafHtml);
    }
    else{
        leafHtml = ...;
        $(this).parent().children("ul").append(leafHtml);
    }
    initTree();
});

这在Firefox和Chrome中运行良好。但在IE6中它没有做任何事情。好像$("a.addnode")似乎不起作用。

1 个答案:

答案 0 :(得分:2)

首先,您需要一些方法来调试正在发生的事情。有一些像Firebug lite这样的东西你可以查看,但我建议只是发出一些警报。

$("a.addnode").live("click", function() {
    alert('click caught');
    if($(this).parent().children("ul").html() == null){
        alert('no children');
        leafHtml = ...;
        $(this).parent().append(leafHtml);
    }
    else{
        alert('children');
        leafHtml = ...;
        $(this).parent().children("ul").append(leafHtml);
    }
    alert('end');
    initTree();
});

你会知道叫什么叫什么,什么不叫,而不是猜测。如果我应该猜测,这里有两个错误会导致这个问题。你的选择器很好。

1:$(this).parent()。children(“ul”)。html()== null永远不会成立。你应该检查$(this).parent()。children(“ul”)。children()。length == 0。

2:$(this).parent()。children(“ul”)。append(leafHtml)毫无意义。 ul中的文本无效,如果IE6忽略它(它应该),我不会感到惊讶。

我怀疑#1会让#2总是发生,因为这是无效的IE6只是忽略它。