【问题标题】:Javascript (JsTree) : How to reference subelements of tree nodesJavascript(JsTree):如何引用树节点的子元素
【发布时间】:2011-09-05 11:41:48
【问题描述】:

您好,我正在开发一个 Symfony 项目,我需要 JsTree 结构来表示数据库中的层次结构。我正确地声明了 JsTree 库所指定的 <ul> & <li> 结构。每个<li> 都有它的id = 数据库中相应元素的id,我放了一个<a> 和它的href=[the url i need to use when click]。然后我使用以下函数:

$("#myTree").bind("select_node.jstree",function(event,data){
    if(data.rslt.obj.attr("id")!=0){
        window.location = "myModule/myAction?id="+data.rslt.obj.attr("id");
    }
});

问题是链接无法正常工作。当我点击时,window.location 会在路径末尾添加“myModule/myAction?id="+"the selected id"。

当我尝试更复杂的方法来指示要前往的新路线时,例如window.location = <?php echo url_for("myModule/myAction")?>+"/id/"+data.rslt.obj.attr("id");,那么树的表示就会失败:它不像树那样显示,只是作为列表显示。

我认为如果有某种方法可以做这样的事情是可能的: window.location = data.rslt.obj.attr("id").subelement("a").attr("href"); 然后我可以访问包含在 <li> 字段中的信息。

非常感谢您的宝贵时间。

【问题讨论】:

  • “我做错了吗?”不是正确的问题。您应该进行更多调查并更具体。但是,仅检查您的 js 代码就可以注意到您可能在将其分配给 window.location 的 php 输出周围缺少引号。
  • 我一直在调查,但我是 javascript/jquery 的新手,我不知道在哪里做。除了“我做错什么了吗?”,我认为这个问题是具体的。显示的脚本没有缺少 php 引号,如果我添加它们,我还有其他错误(请参阅code portion 2
  • 你能提供jsfiddle示例吗?我不明白你想要实现什么。你能帮我改一下吗?
  • 我在问是否有某种方法可以访问包含在 jstree 的 nonde (
  • ) 中的元素
  • jsfiddle 会有所帮助....
  • 标签: php javascript jquery symfony1 jstree


    【解决方案1】:

    如果你能找到

  • 的id,那么你可以通过

    var id = data.rslt.obj.attr("id");

    $("#"+id).val();

  • 【讨论】:

    • 这是否应该返回包含在
    • 标记之间的内容?具有常用方法的 javascript/jQuery 对象?我试过了,似乎什么也没返回:S
  • 它假设返回id标签的值,其中
  • 看起来像
  • ,在这种情况下它将返回id变量中的“someid”
  • 【解决方案2】:

    我终于找到了答案。有一个名为childNodes 的函数返回对象的所有子元素。我使用了下面的代码:

    var id = data.rslt.obj.attr("id");

    var child = document.getElementById(id).childNodes[1].firstChild;

    查看文档:childNodes doc

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签