"属性从"开始选择

时间:2014-06-02 09:12:29

标签: javascript jquery

美好的一天!我正在使用jQuery插件jstree及其search功能。它仅适用于第一个" set" jstree。我使用了递增值div和"属性从选择器开始#34; $('div[id^="jstree"]')(感谢stackoverflow用户)但它只在第一组中搜索。

@main(Html(""), nav = "map") {

    <a href="@routes.Tags.tree()"> Tree </a> <br><br> 

    <input type="text" id="plugins4_q" placeholder="Search" class="input"> <br><br>

        @for(i <- 0 until first.size()) {
        <div id="jstree@i" class="jstree">
            <ul>
                <li> <span title="@first.get(i).getNotes()"> @first.get(i).getName() </span>
                    @for(rt <- first.get(i).getRelatedTags()) {
                        @if(rt.getRelationship().equals("child")) {
                            <ul>
                                @multiply(rt)
                            </ul>
                        }
                    }
            </ul>
            @if(controllers.Tags.getPeers(first.get(i)) != null) {
                @for(peers <- controllers.Tags.getPeers(first.get(i))) {
                    <ul>
                        <li> <span title="@peers.getNotes()"> @peers.getName() </span>
                            @for(rt2 <- peers.getRelatedTags()) {
                                @if(rt2.getRelationship().equals("child")) {
                                    <ul>
                                        @multiply(rt2)
                                    </ul>
                                }
                            }
                    </ul>
                }
            }
        </div> <hr>
        }


<script src= '@routes.Assets.at("dist/libs/jquery.js")' type="text/javascript"></script>
<script src= '@routes.Assets.at("dist/jstree.min.js")' type="text/javascript"></script>

<script>
  $(function () {
    // 6 create an instance when the DOM is ready
    $('.jstree').jstree({
          "core" : {
                "animation" : 0,
                "check_callback" : true,
                "themes" : { "stripes" : true }
              },

              "plugins" : [
                            "contextmenu", "dnd", "search",
                            "state", "types", "core", "json_data", "ui", "crrm"
                          ]
    });
    var to = false;
    $('#plugins4_q').keyup(function () {
      if(to) { clearTimeout(to); }
      to = setTimeout(function () {
        var v = $('#plugins4_q').val();
        $('div[id^="jstree"]').jstree(true).search(v);
      }, 250);
    });

  });

  </script>

  }

请帮我解决这个问题。据我所知,语法是正确的。非常感谢你!

1 个答案:

答案 0 :(得分:3)

使用jstree()作为getter可能只返回1个实例(第一个是jQuery中任何getter方法的情况),所以尝试使用.each()之类的

$('div[id^="jstree"]').each(function () {
    $(this).jstree(true).search(v);
})

jstree([arg])

  

如果存在现有实例且arg不是实例的字符串   本身被返回(类似于$ .jstree.reference)。