2017-08-04 106 views
0

我读了很多关于这个问题的问题,但无论我做什么,它都不起作用。检查是否用动态ID检查复选框

我有几个复选框动态的ID,像:

More: 
<input type="checkbox" name="more" id="checkbox-more-285"> 
<br> Extra: 
<input type="checkbox" name="extra" id="checkbox-extra-285"> 

<button class="add_to_cart"> 
    Add to cart 
</button> 

285号可以是任何东西,我在其他地方使用。

然后,我有这样的jQuery:

jQuery('.add_to_cart').click(function(e) { 
    e.preventDefault(); 

    if (jQuery("[id^='checkbox-more-']:checked")) { 
    console.log('1'); 
    } 

    if (jQuery("[id^='checkbox-extra-']:checked")) { 
    console.log('2'); 
    } 
    return false; 
}); 

正如你可以在的jsfiddle看到这里https://jsfiddle.net/,每当我单击添加到购物车按钮,这两个日志都在控制台上。

+1

尝试'的jQuery(“[ID^=”复选框 - 更多 - ')“)。is(”:checked“)' –

回答

3

仅仅测试jQuery集合是不够的,它总是真实的。在.length属性添加到测试,像这样:

if (jQuery("[id^='checkbox-more-']:checked").length) { // etc... 
0

您可以使用

jQuery("[id^='checkbox-more-']").is(":checked") 
{ 
    console.log('1'); 
    } 

if($("[id^='checkbox-more-']").prop('checked') == true){ 
    console.log('1'); 
} 
+0

'prop'在这里可能不适合,因为它只检查第一个匹配,而不检查可能有这样一个'id'的其他元素。 – trincot