Селектор класса jquery не работает в IE6 - PullRequest
1 голос
/ 01 июля 2011

Эйдт: Спасибо всем и извините за мою беспечность. Ошибка 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 Ответ

2 голосов
/ 01 июля 2011

Прежде всего, вам нужен способ отладки происходящего. Есть такие вещи, как 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();
});

Вы будете знать, что называется get, а что не вызывается, вместо того, чтобы гадать. Если предположить, есть две ошибки, которые вызывают эту проблему. Ваш селектор в порядке.

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 просто игнорирует его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...