我有多个HTML元素,点击后会显示一个iframed表单(不能在这个项目中使用AJAX)。我没有创建一组特定于每个项目的不同形式,而是希望通过URL传递一个令牌,这些URL会在表单中悄悄地记录下来,以便我知道他们点击了哪个项目。
$('.Item a').click(function() {
var className = $(this).attr('class');
console.log("you clicked " + className);
switch(className){
case 'item1':
$("#myiframe").attr('src', "form.php?token1");
console.log("url changed to token1");
}
});
问题是某些a
标记有多个类。如何将switch case更改为语法正确的等效函数:case:contains 'item1':
?
答案 0 :(得分:3)
我认为switch语句不适合这个:
您可以使用hasClass
method,并执行以下操作:
$('.Item').on('click', 'a', function() {
if ($(this).hasClass('item1')){
$("#myiframe").attr('src', "form.php?token1");
console.log("url changed to token1");
}
});
答案 1 :(得分:1)
如果你真的想要使用switch
,除非你真的需要使用class,设置一个数据属性等于每个项目的标记值,并且你在哪里设置className变量设置一个标记变量而不是打开那个。
类似的东西:
$('.Item a').click(function() {
var token = $(this).data('token');
console.log("you clicked " + token);
switch(token){
case 'item1':
$("#myiframe").attr('src', "form.php?token1");
console.log("url changed to token1");
}
});
答案 2 :(得分:0)
您可以使用class
is(selector)
的全文。
$('.Item a').click(function() {
if($(this).is('.item1'){
/* do something when class = item1*/
}
});
或者更具体地在初始选择器中定位类
$('.Item a.item1').click...