0

値属性が「4107,2632」に設定された動的ドロップダウン リストがあります。フィルターを適用すると、value 属性のドロップダウン オプションで使用できる値が 4107 として 1 つしかありません。ドロップダウン リストのレンダリングされた html は

<select id="ddlFilterGoal">
    <option value="All">Goals / Folders</option>
    <option value="4124,2632">1234567890 (APPp PUB)</option>
    <option value="4123,2645">aaaa sdsssss (NNN Employee)</option>
    <option value="4088,2629">Default (nb nb)</option>
    <option value="4107,2632">Goal with start date only (APPp PUB)</option>
</select>

今、私はこのようなオプションを選択しようとしています

$("#ddlFilterGoal option:value:contains('4107')").val(); - no error but option not get selected, it gives the default option "All" 
$("#ddlFilterGoal option:[value:contains('4107')"]).val(); - error with "]"

私が間違っていることと、これを達成する方法を教えてください。

4

2 に答える 2

4

$("#ddlFilterGoal option[value*='4107']").val();

詳細については、http: //api.jquery.com/attribute-contains-selector/を参照してください。

注: この回答は、re: を実行しようとしていたことに対する解決策への洞察を提供します。データがどのように見えるかを想定していないため、この回答は選択リストでオプション値を検索するためにこれを使用することを示唆していません。むしろ、属性を含むセレクターの使用方法についての洞察を提供します

于 2013-05-11T06:15:11.990 に答える
1

これを行う最も安全な方法。

文字列 4107 ex:- 41072 などを含む値を持つ別のオプションがあるかもしれません。したがって、探している正確な値を除外するのが最善の方法です。

デモ

alert($("#ddlFilterGoal option").filter(function(){
     return $.inArray('4107' ,this.value.split(',')) > -1;
}).first().val());

また

alert($("#ddlFilterGoal option").filter(function(){
     return $.inArray('4107' ,this.value.split(',')) > -1;
}).get(0).value);

含まれているセレクターは、値に含まれているため、次のセレクターにも一致し4107ますが、実際に探しているのは 4107 です。

  <option value="41077,2632">Goal with start date only (APPp PUB)</option>

より正確に:-

var match=$("#ddlFilterGoal option").filter(function(){
     return $.inArray('4107' ,this.value.split(',')) > -1;
}).get(0); //<-- Remove get(0) to get array of values incase of multiple matches.

if(match)
    alert(match.value); 
else
    alert('No match');
于 2013-05-11T06:21:28.657 に答える