如何在jquery中使用click事件切换id?

时间:2015-05-11 08:53:10

标签: javascript jquery syntax

我在这里待了很长时间,所以我不妨问。

我正在寻找Jquery中的开关,就像这个伪代码一样:

switch($(idvariable).click)
{
     case $someid: break; //if the user clicked this id, something happens
     case $someotherid: break; // if the user clicked another id with name "someotherid"
     case $yetanotherid: break; // ditto
}

这可能吗?

预期的行为如下:

如果单击span 1,则会发生某些事情。如果单击span 2,则会发生其他情况。每个span都有一个id,但这应该适用于任何元素,无论是div span还是其他。例如,如果单击具有给定id的div,则x发生,如果单击具有给定id的span,则y发生。

这样做的重点是不需要做1000 $("#blabla").click( function等等......重点是将它们分组,因为它们的行为非常相似。

在我的情况下,我想要做的是,如果给定具有给定id的元素被点击,则增加给定的隐藏元素值。如果单击另一个具有另一个id的元素,则会发生SAME。除此之外,可能还需要执行一些CSS。

4 个答案:

答案 0 :(得分:6)

$(document).on('click', 'selector', function() {
    var id = $(this).attr('id');

    switch(id) {
        case 'home': 
            //
            break;
        case 'contact':
            //
            break;
        default:
            console.log('No id');
    }
});

答案 1 :(得分:3)

您可以使用@Justinas中的代码但是没有意义,因为这段代码:

$('.click-me').click(function () {
    switch ($(this).attr('id')) {
        case 'a1':
             doSomethingA();
             break;
        case 'a2':
             doSomethingB();
             break;
        case 'a3':
             doSomethingC();
             break;
    }
});

可以和应该(为了便于阅读)替换为:

$('#a1').click(doSomethingA);
$('#a2').click(doSomethingB);
$('#a3').click(doSomethingC);

答案 2 :(得分:2)

是的,使用class绑定click事件(或列出所有id' s)

<button class='click-me' id='a1'>1</button>
<button class='click-me' id='a2'>2</button>
<button class='click-me' id='a3'>3</button>

$('.click-me').click(function () {
    switch ($(this).attr('id')) {
        case 'a1':
             break;
        case 'a2':
             break;
        case 'a3':
             break;
    }
});

答案 3 :(得分:1)

试试这个

function callSwitch(value) {
    switch(value) {
        case 'someid':
        break;

        //etc..
    }
}

$(".switchclick").on('click', function() {
    var myid = $(this).prop('id');
    callSwitch(myid);
});