如何在Jquery树视图中检索单击的元素

时间:2010-01-11 16:12:48

标签: jquery treeview

我愿意使用jquery treeview。我有一个类别和子类别可供选择项目,我想在树视图中显示它们。我希望得到点击的值。

目前我正致力于这样的事情:

<ul id="treeview">
    <li>group1a
        <ul>
            <li>group11 </li>
        </ul>
    </li>
    <li>group2 </li>
    <li>group3 </li>
    <li>group4 </li>
    <li>group5 </li>
</ul>

我试过这个脚本,但点击功能给我一个错误。

<script type="text/javascript">
            $().ready(function () {
                $("#treeview").treeview();
            });

            $("#treeview").click(function (e) {
                e.target.addClass("selected");
            });

</script>

我是这个Jquery处理事物的方式的一个非常大的初学者,所以我假设我在某个地方错过了一些重点...感谢你的帮助......

2 个答案:

答案 0 :(得分:2)

addClass是一个jQuery方法,而e.target不是jQuery对象。您需要将其括在$()

$("#treeview").click(function (e) {
    $(e.target).addClass("selected");
});

您的代码无论如何都不会起作用,因为click事件仅绑定到#treeview元素,当该元素触发时,e.target将始终是#treeview元素。您正在寻找的可能是这样的:

$("#treeview li").click(function() {
    $(this).addClass("selected");
});

这会将click函数绑定到所有li元素,当单击其中一个元素时,它会将“selected”类添加到该元素。

您可能还想允许取消选择对象,因此您应该使用toggleClass而不是addClass。如果您只想选择一个对象,可以使用:

$("#treeview li").click(function() {
    // Clear all selected states
    $('#treeview li').removeClass('selected');
    // Set current as selected
    $(this).addClass("selected");
});

希望这有帮助。

答案 1 :(得分:0)

尝试:

$(document).ready(function(){
    $("#browser").treeview({
        toggle:function(){
            console.log($(this).find('ul li'));
        }
    });

Toggle是点击的回调。 'this'值表示包含de'ul'和树内容的'li'。在这种情况下,控制台将找到嵌套在'ul'

内的所有'li'