-1

我有以下有效的脚本:

classes = $(this).attr("class").split('_');

If$(this)的课程是:

class="billed_department_employee_client_code"

最终结果将如下所示:

["billed", "department", "employee", "client", "code"] 

这正是我想要的,因为它允许我做这样的事情

console.log( classes[0] );
console.log( classes[1] );
console.log( classes[2] );
console.log( classes[3] );

是否可以从中删除单个值classes并将其余值移回?

例如,

如果classes包含department,删除它。所以,如果它看起来像这样:

["billed", "department", "employee", "client", "code"] 

它应该变成:

["billed", "employee", "client", "code"] 

如何才能做到这一点?

4

3 回答 3

2

您可以使用该splice()方法。

classes.splice(1, 1);

将从索引 1(第一个参数)开始删除 1 个项目(第二个参数)。如果不知道索引,可以使用indexOf()查找。

有些浏览器不支持indexOf(),所以你可以使用MDN的脚本来使用它。您还需要检查以确保indexOf()不会返回-1(未找到),因为将负参数传递给 index intosplice()将导致它从数组末尾删除项目。

于 2012-06-06T15:07:05.190 回答
1

是的。可以办到。这边走:

var c = ["billed", "department", "employee", "client", "code"];
c.splice( c.indexOf('department'), 1); // will remove 'department' from the array.
c.join("_"); // will return "billed_employee_client_code"
于 2012-06-06T15:07:18.097 回答
0

如果您使用的是相对现代的浏览器,则可以使用spliceindexOf (您始终可以为其余部分应用 shim)。所以:

var pos = classes.indexOf("department");

if (pos > -1) {
    classes.splice(pos, 1);
}

$(this).attr("class", classes.join("_"));
于 2012-06-06T15:09:43.193 回答