0

15のリストアイテムがあります。私はユーザーがそれらから5つだけを選ぶことを許可します。次に、この情報を配列に入れてサーバーに送信します。

<li><a href="#" id="item1" class="select">Item One</a></li> ... etc.

次に、このコードを使用して、選択したアイテムのクラスを切り替えます

function SelectPrizes (){
$('a.select').click(function() {
    $(this).toggleClass("selected");
    $(this).text($(this).text() == 'Choose prize' ? 'Selected' : 'Choose prize');
    return false;
});
}

私の質問は、5つの選択のみを許可し、選択したアイテムのみをIDで配列に追加する方法です。

hasClass('selected')でフィルタリングできることは理解していますが、そのための正しい構文を理解できません。

4

3 に答える 3

1

5つの要素が選択されているかどうかについての提出決定については、次の値を確認してください-

$('a.select[class*="selected"]').length==5
于 2012-04-16T10:35:58.443 に答える
1

slice(start, end)指定したインデックスから開始して、選択から特定の数の結果を取得するために使用できます。

var results = $("a.select").slice(0, 5);

質問の 2 番目の部分は、条件付きチェックで答えることができます。

if ($(this).hasClass("selected")) {

}
于 2012-04-16T10:33:53.300 に答える
1

あなたの3つの質問に答えるには:

5 つの選択を許可する: の長さが$('a.select.selected')制限の 5 を超えないようにしてください。

if ( $('a.select.selected').length < 5 ) {
    // Does not exceed, so we can add...
}

選択したアイテムのみを配列に追加します。クラスが「選択された」アイテムのみを追加します。

$('a.select.selected').each(function(){
    // Add to array
});

Mr. Disappointment が提案した hasClass('selected') の構文:

if ( $(this).hasClass('selected') ) {

}

Mr. Disappointment の解決策は、ユーザーが 5 つ以上のアイテムを選択できるようにし、そのうちの 5 つだけを選択できるようにする場合に機能します。

また、html を改善するための提案。li アイテムには ul 親があると仮定します。クラス 'select' をこの ul 親に設定し、セレクターを使用します: $('ul.select li a').click().

これをすべてjsfiddleにまとめました:http://jsfiddle.net/5b8aj/6/

于 2012-04-16T11:02:09.500 に答える