jQuery - 如何在多个变量上分配事件?

时间:2014-10-08 06:59:31

标签: javascript jquery

我有两个或更多用jQuery选择的变量,我想在所有这些变量上分配具有相同功能的点击事件。或者一个变量和一个选择器。我该怎么做?我能做到:

function click_event_1(var_1, var_2) {
    var_1.on("click", function() {
        alert(1);
    });
    var_2.on("click", function() {
        alert(1);
    });
}

function click_event_2(var_1, selector) {
    var_1.on("click", function() {
        alert(1);
    });
    jQuery(selector).on("click", function() {
        alert(1);
    });
}

但我想为每个事件只写一个函数。

3 个答案:

答案 0 :(得分:2)

您(至少)有两个选择:

  1. 使用命名函数:

    function click_event_1(var_1, var_2) {
        var_1.on("click", handler);
        var_2.on("click", handler);
    
        function handler() {
            alert(1);
        }
    }
    
  2. 使用add,它创建一个新的jQuery集,其中包含您调用它的集合的联合以及您作为参数提供的集合:

    function click_event_1(var_1, var_2) {
        var_1.add(var_2).on("click", function() {
            alert(1);
        });
    }
    
  3. 两者都适用于你的第二个例子(add接受一个选择器和一个集合。)

答案 1 :(得分:1)

您可以使用add添加到jQuery集合中,无论是元素还是选择器:

var_1.add(var_2).click

或者:

var_1.add(selector).click

该事件将适用于集合中的所有元素。

答案 2 :(得分:0)

您可以为这些元素添加一个类。

var element1 = $('#element1');
element1.addClass('clickable');
var element2 = $('#element2');
element2.addClass('clickable');

// for elements inside an iframe
var iframeElement1 = $('#iframeElement1', $('iframe').contents());
iframeElement1.addClass('clickable');

// you can add more elements here

$('.clickable').on('click', function (event) {
   // do click logic here
})