美好的一天!我正在使用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>
}
请帮我解决这个问题。据我所知,语法是正确的。非常感谢你!
答案 0 :(得分:3)
使用jstree()
作为getter可能只返回1个实例(第一个是jQuery中任何getter方法的情况),所以尝试使用.each()之类的
$('div[id^="jstree"]').each(function () {
$(this).jstree(true).search(v);
})
如果存在现有实例且arg不是实例的字符串 本身被返回(类似于$ .jstree.reference)。