【问题标题】:Assign Click Events to < li > in JQuery Treeview在 JQuery Treeview 中将点击事件分配给 <li>
【发布时间】:2009-07-03 20:26:08
【问题描述】:

我正在使用 JQuery Treeview 插件来显示一些数据。基本上,我想向子

  • 元素添加一个点击事件,将它们的 innerhtml 复制到页面上的另一个 div 中。但是,我无法为这些 元素分配点击事件。

    希望有人曾经涉足此领域并可以提供一些帮助。

    谢谢。

  • 【问题讨论】:

    • 你试过了吗:("#nameOfLi").click(function(){alert('foo');});?
    • 是的 - 即使对我来说,它似乎也没有附加点击。相同的代码会将点击事件附加到树视图之外页面上的任何位置(显然)。
    • 能发个sn-p代码吗?

    标签: jquery jquery-plugins treeview


    【解决方案1】:

    使用http://docs.jquery.com/Plugins/Treeview 示例中的标记:

    $("span.file, span.folder", "#example li")
        .click(function() { alert($(this).text()); });
    

    有效。处理对 LI 项目本身的点击会捕获分支收缩和扩展。

    【讨论】:

    • 谢谢,您的评论让我意识到这是我构建树视图(通过 JSON 并添加分支)的方式导致了问题。在我添加了动态生成的分支后,我能够通过立即分配点击事件来解决我的问题。
    【解决方案2】:

    您可以使用 .live 构造。对我来说它有效:

    $('li','ul#menu').live('click', function(){
        alert('Click event');    
    });
    

    【讨论】:

      【解决方案3】:
      <li onclick="selectNode(event, this);" id="${node2.nodeId}" class="closed">
          <span class="folder"> ${node2.name} </span>
      </li>
      
      
      
      
      function selectNode(event, nodeHtmlEl) {
          // IE
          if ($.browser.msie) {
              window.event.cancelBubble = true; 
          }
          if(event.stopPropagation) { 
              event.stopPropagation();
          }
          alert("selectNode ID: " + $(nodeHtmlEl).attr("id"));
      }
      

      【讨论】:

        【解决方案4】:

        这样试试

        $('li:not(:has(>ul))', 'ul#menu').live('click', function () {             
                        alert($(this).text());
                    });
        

        它只会将点击事件添加到叶节点(不是根节点)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-29
          • 2012-08-29
          • 1970-01-01
          • 2013-04-30
          相关资源
          最近更新 更多