1

私にはいくつかの要素のグループがあり、その各グループは特定の番号に関連しています。グループ内のすべての要素にクラスを追加する各要素にマウスオーバーを追加し、そのクラスを削除するマウスアウトを追加したいと思います。jQueryのattributeStartsWithセレクターは、文字列リテラルを指定する限り、これに最適ですが、任意のグループでこれを実行する関数を作成しようとしているため、パラメーターをサブ文字列として受け取るように選択する必要があります。attributeStartsWithでこれを行う方法はありますか、それとも他の手法を試す必要がありますか?

これが私が持っているものです:

function highlight(numberString)
{ $('p[id^="321"]').addClass("highlighted");  }

「321」をパラメータnumberStringに置き換える必要があります。以下はそれをしていないようです。これは、attributeStartsWithがnumberStringを変数名ではなく、引用符で囲まれていない単一の単語の文字列として扱うためです。

function highlight(numberString)
{ $('p[id^=numberString]').addClass("highlighted");  }
4

1 に答える 1

2

引数を文字列として挿入して引用するだけです。

function highlight(numberString) {
    $('p[id^=' + numberString + ']').addClass("highlighted");
}

http://jsfiddle.net/g3qHX/

ところで、Javascript には PHP のような変数文字列の展開/補間はありません。これは考えてみれば明らかですが、キャリーオーバーが発生し、問題が発生する可能性があります (それがあなたの状況である場合)。

また、セレクターでテストしている値は、スペースがない限り引用符で囲む必要がないため、次のコードはおそらく必要ありませんが、はありません:

function highlight(numberString) {
    $('p[id^="' + numberString + '"]').addClass("highlighted");
}

http://jsfiddle.net/g3qHX/1

"私が追加したことに注意してください。idいずれにせよ、値にスペースを含めることはできませんが、これを他の属性セレクターと一緒に使用する場合は注意が必要です。

もう 1 つの注意事項は、idHTML5 より前の属性では、英数字で始まる必要があることです (英数字のみにすることはできません)。HTML5 はこれを変更しましたが、(私の好みと推奨事項として) ほとんどのユースケースで以前の標準に従うべきだと思います。

于 2012-07-30T00:31:20.820 に答える