Javascript 在新jstree中单击事件不使用复制的锚触发

Javascript 在新jstree中单击事件不使用复制的锚触发,javascript,jquery,html,jstree,Javascript,Jquery,Html,Jstree,我有一个单击事件,它只允许锚定标记在双击时工作。当锚定标记位于原始树中时,此功能正常工作,但在将树中的文件复制到另一棵树后,事件不会触发,只需单击一次即可使锚定标记工作。有人知道原因吗?锚定标记在新树中完全相同。我的代码如下: $('.tree-link').click(function(){ return false; }).dblclick(function() { window.location = this.href; return false; }); 复制之

我有一个单击事件,它只允许锚定标记在双击时工作。当锚定标记位于原始树中时,此功能正常工作,但在将树中的文件复制到另一棵树后,事件不会触发,只需单击一次即可使锚定标记工作。有人知道原因吗?锚定标记在新树中完全相同。我的代码如下:

$('.tree-link').click(function(){
    return false;
}).dblclick(function() {
    window.location = this.href;
    return false;
});
复制之前的原始定位标记(激发事件):


新树中复制的锚标记(不触发事件):



两个锚定标记完全相同,但我不知道为什么另一个不触发click事件。。。有人知道为什么吗?

之所以会发生这种情况,是因为从一棵树移动到另一棵树可能会从DOM中删除节点并再次插入它

看看这个:

$('.myClass')。单击(函数(){
返回false;
}).dblclick(函数(){
window.location=this.href;
});
$('.move')。单击(函数(){
var-anchor=$('.myClass');
锚定。移除();
document.body.appendChild(anchor.get(0));
});


移动链接
是否已检查此.href是否可在您的功能范围内访问?很可能您引用的是jquery,而不是对象本身

尝试:

试着这样做:

$('body').on('click', '.tree-link', function(event){
        event.preventDefault();
        console.log('single-click');
}).on('dblclick', function() {
        event.preventDefault();
        console.log('double-click');
});
在这里拉小提琴:


另外,您可能对阅读以下内容感兴趣:

我放弃了使用锚点,只是在使用window.location.href更改页面时使用了双击事件。这对我来说现在很好。如果有人感兴趣,以下是代码:

$('#tree').on("dblclick", function (event) {
var li = $(event.target).closest("li");
var node = $('#tree').jstree().get_node(li.attr('id'));
if(node.icon.indexOf("briefcase") != -1){
    window.location.href = "#settings.html";
}

抱歉,我意识到问题与我正在使用的jstree插件有关,而不是锚定标记有多个类。问题仍然存在。如果未复制原始节点,则此.href有效。我遇到的问题是,单击事件不会使用唯一id在复制的节点上激发,可能是侦听器正在等待之前找到的dom元素激发。如果您希望多个对象激发相同的方法,您可以始终使用
$(“#id_01,#id_02,#id_03”)。单击()
No这并不理想,因为id是由jstree插件自动生成的,用于复制和粘贴,当树有多个链接时,该方法可能会很快变得混乱。您是否尝试过直接双击?
$('.myclass')。dblclick(function(){window location=this.href;})
No仍然是相同的。很遗憾,原始节点将触发事件,但复制的节点不会t@NiallMitch14请重新检查答案,它已更新。是的,我尝试过,它现在确实进入函数,但阻止默认值或返回false以防止超链接重定向不起作用now@NiallMitch14再次更新。现在如果您move
event.preventDefault()
它将打开一个新的标签转到google…不,这不起作用…它可以进入函数,但阻止默认值不会阻止转到新链接。不确定js树锚标签的行为是否不同
var self = this;
$('.myClass').click(function(){
    return false;
}).dblclick(function() {
    window.location = this.href;
    return false;
});
$('body').on('click', '.tree-link', function(event){
        event.preventDefault();
        console.log('single-click');
}).on('dblclick', function() {
        event.preventDefault();
        console.log('double-click');
});
$('#tree').on("dblclick", function (event) {
var li = $(event.target).closest("li");
var node = $('#tree').jstree().get_node(li.attr('id'));
if(node.icon.indexOf("briefcase") != -1){
    window.location.href = "#settings.html";
}