我在这里待了很长时间,所以我不妨问。
我正在寻找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。
答案 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);
});