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

您可以使用slice(start, end)从指定索引开始从选择中获取特定数量的结果。

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

您问题的第二部分可以通过条件检查来回答:

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

}
于 2012-04-16T10:33:53.300 回答
1

检查以下值以获取有关是否选择 5 个元素的提交决定不是 -

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

回答你的三个问题:

允许 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
});

失望先生建议的 hasClass('selected') 的语法:

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

}

如果您允许用户选择超过 5 个项目,然后只选择其中任意 5 个,则失望先生的解决方案将起作用。

另外,建议改进您的 html。我假设 li 项目有一个 ul 父母。将类 'select' 设置为此 ul 父级并使用选择器:$('ul.select li a').click()。

我已经为你把这一切放在了一个 jsfiddle 中:http: //jsfiddle.net/5b8aj/6/

于 2012-04-16T11:02:09.500 回答