【问题标题】:jQuery: Pass variable to :eq() does not workjQuery:将变量传递给:eq()不起作用
【发布时间】:2009-07-02 14:30:33
【问题描述】:

我一直试图找出以下代码行不起作用的原因:

$('#add-cloud > select').change(function() {
    var selected = parseInt($('#add-cloud select option:selected').val()); 
    $("#cloud-calculator table tr:eq(selected)").css("color", "red");
});

例如,如果我将 :eq(selected) 更改为 :eq(4) - 工作正常。如何将变量作为参数传递给:eq()

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    你必须将你的变量与你的选择器连接起来:

    $("tr:eq("+selected+")");
    

    【讨论】:

    • 代码是对的,但是对它发生了什么的描述是非常错误的。
    • 谢谢!我之前尝试过单引号,但它不起作用。我想我没有注意双引号。
    • 对,单引号不起作用,因为您所做的不是“转义”任何东西,它终止了第一个字符串“tr:eq(”,添加所选变量,然后添加另一个字符串“)”。
    • 对不起,这不是那个意义上的“逃脱”。连接会减少误导。
    【解决方案2】:

    按照您的操作方式,您将实际字符串 "selected" 嵌入到选择器中。您需要使用 selected 变量作为其中的一部分来构造一个字符串:

    $("#cloud-calculator table tr:eq(" + selected + ")").css("color", "red");
    

    【讨论】:

      【解决方案3】:

      另外,您可以简单地使用 'this' 对象来获取选定的值。

      $('#add-cloud > select').change(function() 
      {
          var rowSelector = '#cloud-calculator table tr:eq(' + parseInt(this.val()) + ')';
          $(rowSelector).css("color", "red");
      }
      

      【讨论】:

        【解决方案4】:

        是的,我们可以将变量传递给eq() function。但您需要禁用 Firebug。否则将无法正常工作。

        请检查这个例子。

        var index = 3       
        $('#sidebar_menu li:eq('+index+')').css({"color":"#050959"});
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-16
          • 1970-01-01
          • 1970-01-01
          • 2014-12-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多