附加新的问题

时间:2011-06-18 21:07:55

标签: jquery nested set append live

我有使用嵌套集的类别的数据库。

我有一个功能,应该列出某个类别下一级的所有类别。

文档加载时,起始类别为“1”。这很有效。但是当我点击一个列表项 - 用这个项ID作为起始点做同样的事情时,没有任何反应。数据传递给文档,但jquery无法将列表项添加到创建的ul。

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="JavaSkript/jquery-1.4.4.min.js"></script>
    <style>
        ul.kategorien{ background: #FECA40; float: left;}
    </style>
</head>
<body>
    <div id="kategorien_auflisten" style="background-color: #ffffff;">

    </div>
    <div id="error"></div>
</body>
</html>

<script type="text/javascript">
function auflisten(start) {
    $("div#kategorien_auflisten").append("<ul class='kategorien' id='" + start + "'></ul>")

    jQuery.getJSON("Datenbankabfragen/kategorien_auflisten.php", {
        startknoten: start
    }, function(data) {
        if(data != "") {
            $.each(data, function(i,data){
                $("ul#"+start).append("<li class='' id='" + data.Kategorie_Nr + "'>" + data.Name + "</li>");
            });
        }
        else {
            $("div#error").text("Die Kategorien können leider nicht aufgelistet werden.");
        }
    });
}

$(document).ready(function() {
    auflisten(1);
});

$("li").live("click", function() {
    auflisten($(this).attr("id"));
});
</script>

我希望有人能提供帮助。 谢谢!

1 个答案:

答案 0 :(得分:0)

我想我看到了几个问题。

首先,您从li元素中获取ID:

$("li").live("click", function() {
    auflisten($(this).attr("id"));  // ID of the <li>
});

...将其传递给auflisten

function auflisten(start) {

...将该ID分配给ul元素:

.append("<ul class='kategorien' id='" + start + "'></ul>")

所以现在看来​​你有2个具有相同ID的元素,这是无效的。

因此,当您尝试使用该ID从DOM中选择新的ul元素时,选择将失败:

 $("ul#"+start) // Trying to select based on a non-unique ID will cause problems.

其次,您似乎正在使用数字ID。这在HTML4中无效,并且可能导致类似的选择问题。