1

次のようなhtmlがあります。

<form name="test_form">
<input type="hidden" name="product_id" value="560">
<input type="hidden" name="product_name" value="test product">
<input type="hidden" name="product_type" value="7">
<input type="hidden" name="product_id" value="560">
</form>

「名前」の値が「569」の属性が 2 つあることに注意してください。

後で、javascript も使用され、次の方法で product_name 値を検索します。

var c = $("[name='test_form']");
var product_name = c.product_name.value;

私を信じてください、私はこのコードがいかにひどいものであるかを理解しています。ただし、このように重複した属性で記述されたコードベースを継承しており、上記の方法で属性を参照する javascript が散らばっています。最終的にはもっとエレガントなものでこれを修正しますが、それまでの間、パッチを当てる必要があります。product_name は firefox では正常に検索されますが、google chrome では失敗します。コードを調べて重複した属性を削除せずに、これを簡単に修正する方法を知っている人はいますか? 基本的に、その名前を持つ複数の要素が存在するにもかかわらず、product_name 変数部分が Google Chrome で product_name 属性を正しく読み取るために必要です (幸いなことに、その属性名を持つすべての要素は同じ値を持ちます)。繰り返しますが、これは一時的なパッチとして必要なものなので、やめてください」

4

2 に答える 2

0

product_nameDOM のクエリに使用できない jQuery オブジェクトを作成しているためfind()、andval()メソッドを使用できます。属性セレクターを単独で使用するのは効率的ではないことに注意してください。最初はタグ セレクターを使用することをお勧めします。

var $c = $("form[name='test_form']");
var product_name = $c.find('input[name="product_name"]').val();

現在のコードを使用して入力の値を取得する場合は、jQuery オブジェクトを DOM Element オブジェクトに変換する必要があります。[index]またはget(index)メソッドを使用できます。

var $c = $("form[name='test_form']");
var product_name = $c[0].product_name.value;

http://jsfiddle.net/d7YEV/

于 2012-10-26T05:32:03.990 に答える
0

jQuery を使用している場合は、要素の値を取得するためにも使用する必要があります。

だから代わりに

var c = $("[name='test_form']");
var product_name = c.product_name.value;

あなたが使用する必要があります

var product_value = $('form[name="test_form"] input[name="product_name"]').val()
var product_type = $('form[name="test_form"] input[name="product_type"]').val()
于 2012-10-26T05:32:14.393 に答える