2011-08-09 6 views
1
<select id="list" multiple=multiple> 
    <option value="1" id="one" selected="selected">one </option> 
    <option value="2" id="two" selected="selected">two </option> 
    <option value="3" id="three">three </option> 
</select> 

<ul id="uli"> 
    <li aaa="one">one</li> 
    <li aaa="two">two</li> 
    <li aaa="three">three</li> 
</ul> 

のためのクラスを追加each()コールバックの中へはCSSと同等の他のID

$("#list").find("option:selected").each(function() { 
    // logic here 
}); 

、私はULIに同等のクラスを追加したいです。 liにはaddClass(.back)を使用したいと思います。リストにはaaa == idです。

はライブ:ここhttp://jsfiddle.net/yjL9n/3/

答えて

1

$( '李[AAA =' + this.id + ']')addClass( 'バック');

$('table').find('td[aaa="'+this.id+'"]').addClass('back'); 

はそれを行いますyour fiddleの内側の一部に加えます。 OPからのコメントに基づいてを更新しました。

+0

ありがとう、どのように私はそれを変更することができます:http://jsfiddle.net/yjL9n/8/テーブルですか? –

+0

セレクタの要素を変更するだけで済みます。 [CSSセレクタ](http://www.w3.org/TR/css3-selectors/#selectors) – andyb

7

あなたが行く:。

$("#uli").find('[aaa="'+this.id+'"]') 
    .addClass('back'); 

http://jsfiddle.net/yjL9n/4/

+0

私よりも素早く:-) – andyb

+0

セレクタをきれいにすると、もう1つ+1することができます! :D –

+0

それはあなたのために十分にきれいですか? ;) –

1

が、これは

$("#list").find("option:selected").each(function() { 
    $("#uli").find('[aaa="'+this.id+'"]').addClass('back'); 
}); 
+0

に感謝して、どうすれば変更できますか:http://jsfiddle.net/yjL9n/8 /テーブル? –

2

これは動作します(と整然とです)試してみてください。

$("#list option:selected").each(function() { 
    $('#uli li[aaa="' + this.id + '"]').addClass('back'); 
}); 

http://jsfiddle.net/yjL9n/5/

は、しかし、私は属性としてAAAを使用していないだろう!

+1

では、findを使用せずにすべてのセレクタを1つの文字列にマージするのと同じように、この2つのタイプには大きな違いがあります。 jQueryが長い文字列セレクタを見つけたら、それは常にcss構文解析ユニット(sizzle)を実行し、findが使用されると、通常はそれを自分で管理することができます。しかし、正直なところ、この例をカバーするかどうかは分かりません。 –

+0

私はそれを知らなかった、ありがとう:D –

+0

ありがとう、どのように私はそれを変更することができます:http://jsfiddle.net/yjL9n/8/テーブルの? –