我有以下单选按钮:
// these should be included in sauce_flavor
<input type="radio" value="S." onclick="countPBClicks('S')" name="sauce.left" class="pb-radio-sauce default-sauce">
<input type="radio" value="S.C" onclick="countPBClicks('SF')" name="sauce.left" class="pb-radio-sauce make-table">
// this should be included in sauce
<input type="radio" value="S.reg_sauce" onclick="countPBClicks('S')" name="sauce.left" class="pb-radio-sauce ">
我有一个开关,对于只有pb-radio-sauce' class and items that have both the
pb-radio-sauce class and either
默认酱or 'make-table
的项目,需要有两个单独的流程。
case 'sauce':
retval = {};
jQuery('.pb-radio-sauce:checked').each(function() {
var elem = jQuery(this);
retval[elem.val()] = String(elem.attr('name')).split('.')[1];
});
break;
case 'sauce_flavor':
retval = {};
jQuery('.pb-radio-sauce make-table:checked').each(function() {
var elem = jQuery(this);
retval[elem.val()] = String(elem.attr('name')).split('.')[1];
});
break;
问题是,我似乎无法想出正确的选择器来将它们分开。 ('.pb-radio-sauce:checked')
找到所有结果,包括具有辅助类的结果,然后点击中断,因此它永远不会到达sauce_flavor选项。而且我不确定如何在sauce_flavor实例中包含两个可能的辅助类,同时仍然包含checked属性。
我有一个精简的fiddle(没有开关;只是已定义的函数),它显示了正在发生的事情。我定义函数的顺序无关紧要;所有选中的项目仍会被pb-radio-sauce
选择器捕获。
答案 0 :(得分:1)
我只会抓取所有已选中的单选按钮的集合,然后使用条件将其拆分为您的标准。
Here is a modified version of your fiddle
$(document).ready(function() {
$( '.pb-radio-sauce:checked' ).each( function() {
if( $(this).hasClass( 'default-sauce' ) || $(this).hasClass( 'make-table' ) ) {
console.log( "sauce flavor" );
console.log($(this));
} else {
console.log( "just sauce" );
console.log($(this));
}
} );
})
修改强>:
好的,你需要的是http://api.jquery.com/attribute-equals-selector/
Here is a different modified jsfiddle
$(document).ready(function() {
$( '.pb-radio-sauce:checked' ).each( function() {
if( $(this).hasClass( 'default-sauce' ) || $(this).hasClass( 'make-table' ) ) {
console.log( "sauce flavor" );
console.log($(this));
}
} );
$( 'input[class="pb-radio-sauce"]:checked' ).each( function() {
console.log( "just sauce" );
console.log($(this));
} );
})
[class =“pb-radio-sauce”]选择器只会选择只有“pb-radio-sauce”作为课程的项目。