【问题标题】:What's wrong with this switch statement and jQuery?这个 switch 语句和 jQuery 有什么问题?
【发布时间】:2013-03-22 20:44:14
【问题描述】:

所以你可能会看到我想要做什么。而且我认为它也可以正常工作,但后来我注意到它只会一遍又一遍地加载相同的 5 个帖子。所以我尝试手动添加一个 switch 语句,但它只返回“Uncaught ReferenceError: Invalid left-hand side in assignment”,我用谷歌搜索了一下,发现了一点点。可能是我编辑了我正在使用开关的变量?但无论如何,我怎样才能更好地做到这一点,或者解决它?

    $("#loadmore").click(function(e){
         if ($(this).attr("varl") == "30"){
           alert("All posts loaded");
         }else{
        var createDiv = $("<div class='loading" + $(this).attr("varl") +"'></div>");
        createDiv.hide();
        $(createDiv).appendTo("#left").load("loadmore.php?last=" + $(this).attr("varl"));
        switch($("#loadmore").attr("varl")){
            case '5':
                $("#loadmore").attr("varl") = "10";
            break;
            case '10':
                $("#loadmore").attr("varl") = "15";
            break;
            case '15':
                $("#loadmore").attr("varl") = "20";
            break;
            case '20':
                $("#loadmore").attr("varl") = "25";
            break;
            case '25':
                $("#loadmore").attr("varl") = "30";
            break;
        }
        console.log($("#loadmore").attr("varl") + 5);
        $(createDiv).delay(500).slideDown(500);
        }
        e.preventDefault();
        return false;
    });

【问题讨论】:

  • 执行 $("#loadmore").attr("varl") = "10";工作?老实说,我从来没有见过这样使用它
  • 附带说明,没有具有该名称的有效属性,这表明您的标记无效,可能应该查看数据属性。

标签: javascript jquery switch-statement


【解决方案1】:
$("#loadmore").attr("varl") = "10";

应该是

$("#loadmore").attr("varl","10");

http://api.jquery.com/attr/#attr2

【讨论】:

  • 啊,非常感谢!我想过这个,但没想那么多。
  • 顺便说一句,它修复了整个代码,再次感谢 :) - 将在 10 分钟内成为“正确答案”,当我可以时
【解决方案2】:
var $element = $("#loadmore"),
    value = parseInt($element.attr("varl"),10); // always use a radix

switch ( value ) {
    case 5:
    case 10:
    case 15:
    case 20:
    case 25:
        $element.attr("varl", value + 5); // here's the problem
        break;
}

【讨论】:

  • Blazemonger 已经指出了问题,但这似乎是一个更好的代码,所以我会投票赞成 :)
  • +1 用于干燥代码。如果唯一可能的值是 switch 案例中的值,则可能甚至不需要 switch 语句。
  • 非常感谢你们 :)
  • 您甚至可以将case/switch 替换为if (value%5===0) { ... }
  • 有人有小代码吗?此刻我的大脑一片空白,所以我真的什么都做不了(你可以从我的错误中看出)。有人介意做一个小sn-p吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
相关资源
最近更新 更多