0

html:

<select id="my_select" name="my_select">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>

js:

$("#my_select :contains('two')").first().attr("selected", "selected");

jsfiddle

したがって、選択された要素は である必要がありますtwoが、ご覧のとおりoneです。修正方法は?

ありがとう。

4

5 に答える 5

2

使用する.prop('selected',true)

$("#my_select :contains('two')").first().prop("selected", true);

http://jsfiddle.net/6Pxz5/

.prop() ドキュメントでは、それは述べています

selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked、および defaultSelected を取得し、.prop() メソッドで設定する必要があります。jQuery 1.6 より前では、これらのプロパティは .attr() メソッドで取得できましたが、これは attr の範囲内ではありませんでした。これらには対応する属性がなく、単なるプロパティです。

それにもかかわらず、checked 属性について覚えておくべき最も重要な概念は、checked プロパティに対応していないということです。この属性は実際には defaultChecked プロパティに対応し、チェックボックスの初期値を設定するためにのみ使用する必要があります。checked 属性値はチェックボックスの状態によって変化しませんが、checked プロパティは変化します。したがって、チェックボックスがチェックされているかどうかを判断するクロスブラウザー互換の方法は、次のプロパティを使用することです。

selected や value など、他の動的属性についても同じことが言えます。

于 2013-08-21T13:09:40.917 に答える
2

.attr() の代わりに .prop() を使用する

$("#my_select :contains('two')").first().prop("selected", true);
于 2013-08-21T13:09:56.313 に答える
1

No wrap - <in body>jsfiddleを設定すると、デモが動作します...: http://jsfiddle.net/IrvinDominin/3M9cC/8/

よりクリーンな解決策は、propの代わりに使用することです。この場合は役に立たないattrと思うfirstので、省略できます。

クイックリファレンス:

.prop() メソッドは、プロパティの値を設定する便利な方法です。特に、複数のプロパティを設定する場合、関数によって返される値を使用する場合、または一度に複数の要素に値を設定する場合に便利です。selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked、または defaultSelected を設定するときに使用する必要があります。jQuery 1.6 以降、これらのプロパティは .attr() メソッドで設定できなくなりました。それらには対応する属性がなく、単なるプロパティです。

プロパティは通常、シリアライズされた HTML 属性を変更することなく、DOM 要素の動的な状態に影響を与えます。例には、input 要素の value プロパティ、inputs とボタンの disabled プロパティ、またはチェックボックスの checked プロパティが含まれます。.attr() メソッドの代わりに、.prop() メソッドを使用して無効化およびチェックを設定する必要があります。値の取得と設定には .val() メソッドを使用する必要があります。

コード:

$("#my_select :contains('two')").prop("selected", true);

デモ: http://jsfiddle.net/IrvinDominin/3M9cC/5/

于 2013-08-21T13:15:27.273 に答える
0
var text1 = 'two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).prop('selected', true);
于 2013-08-21T13:15:33.063 に答える