Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 允许一个元素继承另一个元素的所有事件_Javascript_Jquery - Fatal编程技术网

Javascript 允许一个元素继承另一个元素的所有事件

Javascript 允许一个元素继承另一个元素的所有事件,javascript,jquery,Javascript,Jquery,例如,假设我有两个链接,A和B。 如果用户将鼠标悬停在a上,将触发B的悬停事件。与所有其他事件类似,如onlick、mouseover等 我不希望像这样手动添加事件: $('a#A').click(function(){ $('a#B').trigger('click'); }); 谢谢 $('linkDiv').each( function() { $('a#A').click( function() { $('a#B').trigger('click');} });

例如,假设我有两个链接,A和B。 如果用户将鼠标悬停在a上,将触发B的悬停事件。与所有其他事件类似,如onlick、mouseover等

我不希望像这样手动添加事件:

$('a#A').click(function(){
  $('a#B').trigger('click');
});
谢谢

$('linkDiv').each( function() {
  $('a#A').click( function() {
    $('a#B').trigger('click');}
  });
使用foreach/each()jQuery函数指定希望在每个

使用foreach/each()jQuery函数指定希望在每个

您可以通过以下多种事件执行此操作:

$('a#A').on('click mouseenter mouseleave', function(e){
  $('a#B').trigger(e.type);
});
这将触发
#B
上绑定的任何指定事件,如:

$("#B").on({
    mouseenter: function() {
        this.style.color = "#B4B4B4";
    },
    mouseleave: function() {
        this.style.color = "#000";
    }

});

现在让我们将所有事件绑定到
#B
并用
#A
触发它们,以使其变得非常低效:

$("#B").on({
    mouseenter: function() {
        this.style.color = "#B4B4B4";
    },
    mouseleave: function() {
        this.style.color = "#000";
    }

});

var events = [];
$.each($._data($("#B").get(0), "events"), function(i, e) {
    events.push(i); //gets all events currently bound to #B
});

$('a#A').on(events.join(' '), function(e){  //and triggers them with #A
  $('a#B').trigger(e.type);
});

您可以通过以下多种事件执行此操作:

$('a#A').on('click mouseenter mouseleave', function(e){
  $('a#B').trigger(e.type);
});
这将触发
#B
上绑定的任何指定事件,如:

$("#B").on({
    mouseenter: function() {
        this.style.color = "#B4B4B4";
    },
    mouseleave: function() {
        this.style.color = "#000";
    }

});

现在让我们将所有事件绑定到
#B
并用
#A
触发它们,以使其变得非常低效:

$("#B").on({
    mouseenter: function() {
        this.style.color = "#B4B4B4";
    },
    mouseleave: function() {
        this.style.color = "#000";
    }

});

var events = [];
$.each($._data($("#B").get(0), "events"), function(i, e) {
    events.push(i); //gets all events currently bound to #B
});

$('a#A').on(events.join(' '), function(e){  //and triggers them with #A
  $('a#B').trigger(e.type);
});

你知道你可以在选择器中加入它们,比如
$('A,'B')。在('mouseenter'…)
@adeneo上-这仍然适用于单个元素。当用户将鼠标悬停在a上时,它不会触发b.hover,而OP似乎正在寻找a。是的,但如果我将鼠标悬停在a上,则不会触发b的鼠标悬停事件。@techfoobar-javascript中没有悬停事件,因此,即使您的计算机中有跳舞的北极熊,您也无法触发悬停事件。@adeneo-我指的是jquery为其提供了.hover助手的鼠标悬停和退出事件。我觉得这很明显。:-)你知道你可以在选择器中加入它们,比如
$('#A,#B')。在('mouseenter'…)
@adeneo上-这仍然适用于单个元素。当用户将鼠标悬停在a上时,它不会触发b.hover,而OP似乎正在寻找a。是的,但如果我将鼠标悬停在a上,则不会触发b的鼠标悬停事件。@techfoobar-javascript中没有悬停事件,因此,即使您的计算机中有跳舞的北极熊,您也无法触发悬停事件。@adeneo-我指的是jquery为其提供了.hover助手的鼠标悬停和退出事件。我觉得这很明显。:-)谢谢,但我的意思是,附加到一个元素的所有事件都需要由另一个元素继承。您可以在jQuery中复制此代码一次,然后根据需要将按钮/链接放在任意位置。jQuery中没有“自动生成此链接x次”函数。您可以在服务器端使用PHP多次生成页面内容,这是一种潜在的方法,可以创建更多的链接节,而无需写出一堆内容,但它们都是相同的(即,在一个页面中没有唯一的URL)。谢谢,但我的意思是,附加到一个元素的所有事件都需要由另一个元素继承。您可以在jQuery中复制此代码一次,然后根据需要将按钮/链接放在任意位置。jQuery中没有“自动生成此链接x次”函数。您可以在服务器端使用PHP多次生成页面内容,这是一种潜在的方法,可以创建更多的链接节,而无需写出一堆内容,但它们都是相同的(即,在a中不会有唯一的URL)。谢谢@adeneo。我希望jquery对此有一些函数调用。但我认为这是解决这个问题最优雅的办法!谢谢@adeneo。我希望jquery对此有一些函数调用。但我认为这是解决这个问题最优雅的办法!