-1

私は動作する次のスクリプトを持っています:

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

$(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] );

から 1 つの値を削除してclasses、残りの値を元に戻すことはできますか?

例えば、

classesが含まれている場合はdepartment、それを削除します。したがって、次のようになっているとします。

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

次のようになります。

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

これはどのように行うことができますか?

4

3 に答える 3

2

メソッドを使用できますsplice()

classes.splice(1, 1);

インデックス 1 (最初のパラメーター) から始まる 1 つのアイテム (2 番目のパラメーター) を削除します。インデックスがわからない場合は、 を使用indexOf()して検索できます。

一部のブラウザーはサポートしていないため、 MDNindexOf()のスクリプトを使用して使用できます。また、インデックスに負のパラメーターを渡すと、配列の末尾から項目が削除されるため、返されない (見つからない)ことを確認する必要があります。indexOf()-1splice()

于 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を使用できます(残りはいつでもシムを適用できます)。それで:

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

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

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