【问题标题】:issues with jQuery plugin TreeView's toggle when unique set to true当 unique 设置为 true 时,jQuery 插件 TreeView 的切换问题
【发布时间】:2009-09-01 05:55:30
【问题描述】:

我正在尝试使用位于此处的 TreeView 插件: http://docs.jquery.com/Plugins/Treeview

其中一个选项是“唯一的” - 一次只能展开一项。

它非常适合用于显示目的,但随后我尝试连接到 TreeView 的“切换”属性/事件,以找出究竟是哪一个被展开了。

当“unique”设置为 true 时,传递给“toggle”的函数似乎会为每个主列表元素触发,从而阻止我捕获实际初始化的扩展。我明白为什么要这样做了 - 以确保切换其他元素,以便只展开一个。

关于如何仅获取被切换/展开的“唯一”列表项的 id 的任何想法。

下面的示例代码

$(document).ready(function() {
$("#browser").treeview({
    collapsed: true,
    unique: true,
    toggle: function()
    {
            $('#console').append(this.id + ' was toggled');
    }
 });
});

<ul>
<li id="1">Ottawa
    <ul>
        <li>Item 1</li>
        <li>Item 9</li>
    </ul>
</li>
<li id="2">Montreal
    <ul>
        <li>Item 2</li>
        <li>Item 8</li>
    </ul>
</li>
<li id="3">Quebeque
    <ul>
        <li>Item 3</li>
    </ul>
</li>
<li id="4">Calgary
    <ul>
        <li>Item 7</li>
    </ul>
</li>
<li id="6">Toronto
    <ul>
        <li>Item 10</li>
    </ul>
</li>
</ul>
<div id="console"></div>

【问题讨论】:

    标签: jquery jquery-plugins treeview


    【解决方案1】:

    该插件可以使用更多事件,但您可以通过检查它是否有任何可见的子项来轻松判断哪个事件被点击:

    if($(this).find("ul:visible").length)
    {
        $('#console').append(this.id + ' was toggled');
    }
    

    根据您的 HTML 结构,您可以将find 更改为更快的children。这仍然会为所有节点运行 toggle 事件,但会检查正确的节点。
    在此处查看实际操作:http://jsbin.com/esoxu

    【讨论】:

    • 谢谢科比,正是我要找的东西
    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多