我可以根据哪个选择器处于活动状态来定义一个采用变量参数的函数吗?

时间:2014-12-31 01:46:12

标签: javascript jquery function parameters jquery-selectors

我有多个元素要为(开关 - 案例样式)定义一个函数......就像这样:

$("#s1, #s2").hover({param: *specific selector name*}, switchFunc);

function switchFunc(event) {
    switch (event) {
        case "#s1": do something;
            break;
        case "#s2": do something else;
            break;
    }
}

我能以某种方式这样做吗?

1 个答案:

答案 0 :(得分:2)

您不需要为此定义单独的参数,您只需使用$(this)来引用触发事件的元素,或this.id来查看它ID,并根据处理程序中的内容做出决定:

$("#s1, #s2").hover(switchFunc);

function switchFunc() {
    switch (this.id) {
        case "s1": // do something
            break;
        case "s2": // do something else
            break;
    }
}

如果您希望将其与选择器进行比较,请使用$(this).is(selector)

function switchFunc() {
    if ($(this).is("#s1")) {
        // do something
    } else if ($(this).is("#s2")) {
        // do something else
    }
}

请记住,绑定到悬停会使事件触发两次:一次用于mouseenter,一次用于mouseleave。要让它只触发一次,绑定到所需的鼠标事件。