jQuery Switch Case如果包含类名

时间:2015-01-07 19:52:53

标签: jquery html

我有多个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':

3 个答案:

答案 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...