【问题标题】:Pass a constructed class name into JQuery将构造的类名传递给 JQuery
【发布时间】:2016-02-18 14:24:34
【问题描述】:

我正在使用一个数组来附加到一个基类名称,这样我就可以遍历不同的类。

第一位工作正常。对数组进行计数,只要我排除最后两行代码,我就会在控制台中获得所有所需的类名。

但是一旦我添加最后两行循环并尝试添加构造的类名以获取每个类的不同文本值,我会收到以下错误:

未捕获的错误:语法错误,无法识别的表达式:'.moduleStatusDIS'

它在数组的第一次迭代时停止。代码如下。

function setModuleStatusColour() {

var array = ["DIS", "DDG", "CDX", "DKM", "DBV", "DBB", "DGK", "DAM", "LOG", "DUS", "DCL", "DRI"];
var arrayLength = array.length;
console.log(arrayLength);
for (x=0; x < arrayLength; x++){

    var className = "'"+'.moduleStatus'+array[x]+"'";
    console.log(className);
    var statusValue = $(className).text();
    console.log(statusValue);
}

}

我也尝试使用 eval() (虽然我知道它已被弃用,但绝望让我变得更好)见下文。结果与上面的代码相同。

function setModuleStatusColour() {

var array = ["DIS", "DDG", "CDX", "DKM", "DBV", "DBB", "DGK", "DAM", "LOG", "DUS", "DCL", "DRI"];
var arrayLength = array.length;
console.log(arrayLength);
for (x=0; x < arrayLength; x++){

    var className = "'"+'.moduleStatus'+array[x]+"'";
    console.log(className);
    eval('var statusValue = $(className).text()');
    console.log(statusValue);       
}

}

甚至尝试将 var className 转换为字符串,但对我也没有用。

如果我逐个类地写出来并且不使用数组来构造名称,它可以正常工作,但我尝试保持代码简短并易于添加。所以这成了一个原则问题:)

任何帮助将不胜感激!

【问题讨论】:

  • 停止向选择器附加单引号?

标签: javascript jquery arrays class


【解决方案1】:

这一行:

var className = "'"+'.moduleStatus'+array[x]+"'";

应该很简单

var className = ".moduleStatus" + array[x];

给你一个选择器

var statusValue = $(".moduleStatusDIS").text();

选择器只是字符串,不需要用单引号括起来。

【讨论】:

  • 谢谢 Jamie,绝对肯定我第一次尝试过,但可能卡在了一次脑残!
【解决方案2】:

应该很简单,只是:

function setModuleStatusColour() {
    var array = ["DIS", "DDG", "CDX", "DKM", "DBV", "DBB", "DGK", "DAM", "LOG", "DUS", "DCL", "DRI"];
    var arrayLength = array.length;
    console.log(arrayLength);
    for (x=0; x < arrayLength; x++){
        var statusValue = $('.moduleStatus'+array[x]).text();
        console.log(statusValue);
    }

【讨论】:

  • 感谢您的回复 Cespejo。接受了第一个正确答案,但给了你一个赞成票。祝你有美好的一天!
【解决方案3】:

选择器符合以下条件: $(-string-) 其中 -string- 应该是前面带有点的类的名称 (".className"),或者是元素的名称,如 $("div") (但这将选择所有 div 元素!),或者以 # 符号开头的元素的 id,如 $("#sendButton")... .className 和 #sendButton 被引号包围的原因是它们是字符串参考赋予元素的属性,如下所示:

<div class="className">...</div> --> $(".className")
<div id="sendButton">..<div> --> $("#sendButton")
<div>...</div> --> $("div")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2016-04-20
    • 2022-01-12
    • 2014-06-04
    • 2018-05-09
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多