2

8つのサムネイルが入ったポップアップを表示する機能があります。ポップアップには、デフォルトで選択されたサムネイルがあります。

私がやりたいのは、ループ内で、サムネイルのrel属性(1から8)を確認したいということです。デフォルトで選択されたものと一致する場合は、選択された状態を追加します。

8つのサムネイルを生成するコード:

jQuery.each(videos[id], function(i, val) {
    $ul.append("<li><a rel='"+ (i+1) + "'><img src=" + val + "></a></li>");
});

また、1から8までの数値を含む変数があります(これは、選択したクラスを持つ必要がある変数です)。

alreadySelectedThumb[id]

したがって、基本的に、ロジック(単語)は次のとおりです。

タグのrel属性がalreadySelectedThumb[id]と等しい場合は、ビデオ配列をループして、そのタグに選択されクラスを追加します。

それはappend関数にあるので、私はそれをどのように行うのか分かりません。

4

4 に答える 4

3

これは三項演算子の仕事のようです!

jQuery.each(videos[id], function(i, val) {
    var class = (i+1) === alreadySelectedThumb[id] ? 'myClass' : '';
    $ul.append("<li><a rel='"+ (i+1) + "' class='"+ class +"' ><img src=" + val + "></a></li>");
});
于 2012-07-20T18:58:43.493 に答える
2

1つの可能性は、append呼び出しを逆にして、新しいオブジェクトを返すことです。

var $image = $("<li><a rel='"+ (i+1) + "'><img src=" + val + "></a></li>").appendTo($ul);

if(whatever){
   $image.children("a").addClass("selected");
}

それはコードをきちんとしたIMOに保ちます。

于 2012-07-20T18:57:06.280 に答える
2

Javascript(および他の多くの言語)の一部である三項演算子を探していると思います。

if (videos[id] == alreadySelectedThumb[id]) {
    something = "FOO";
} else {
    something = "BAR";
}

代わりに書かれます:

something = (videos[id] == alreadySelectedThumb[id]) ? "FOO" : "BAR";

これは、次のような文字列割り当てに挿入できます。

$ul.append("<li" + 
  ((videos[id] == alreadySelectedThumb[id]) ? ' class="selected" ' : '') +
  "><a rel='" + (i+1) + "'><img src=" + val + "></a></li>");

(申し訳ありませんが、それは私には本当に厄介に見えますが、それはあなたが探しているものだと思います)

于 2012-07-20T18:57:14.007 に答える
2
jQuery.each(videos[id], function(i, val) {
    var appendstr ="";
    if(/*select condition is true*/)
     appendstr  = "<li><a rel='"+ (i+1) + "'><img src=" + val + " class='selectclass'></a></li>"
    else
    appendstr  = "<li><a rel='"+ (i+1) + "'><img src=" + val + "></a></li>"
    $ul.append(appendstr);
});
于 2012-07-20T18:58:20.803 に答える