Javascript 为什么赢了';函数输出到这个jQuery选择器?

Javascript 为什么赢了';函数输出到这个jQuery选择器?,javascript,jquery,Javascript,Jquery,我希望这是我做的傻事。我在底部有一个函数unigref,它(我相信)输出一个字符串。然而,当我调用该函数来构建jQuery选择器时,我无法让它正常工作。我知道其他一切都是有效的,因为当我使用静态字符串时,单选按钮被选中 这是我的。请帮忙 var checkCount = 0; var maxChecks = 2; $(document).ready(function() { $("#test").click(function() { alert($(':checked').lengt

我希望这是我做的傻事。我在底部有一个函数unigref,它(我相信)输出一个字符串。然而,当我调用该函数来构建jQuery选择器时,我无法让它正常工作。我知道其他一切都是有效的,因为当我使用静态字符串时,单选按钮被选中

这是我的。请帮忙

var checkCount = 0;
var maxChecks = 2;

$(document).ready(function() {

$("#test").click(function() {
    alert($(':checked').length);
});

$(':checkbox[name=checkbox]').change(function() {


    checkCount = $(':checkbox:checked').length;

    if (checkCount >= maxChecks) {
      $(':checkbox[name=checkbox]').not(':checked').attr('disabled', true);  
        $(":radio[value="+uniqref()+"]").prop('checked', true);


    } else {
      $(':checkbox[name=checkbox]:disabled').attr('disabled', false);
    }

    if (this.checked) {
        $("td.label").append("<label>" + this.value + "</label>");
    } else {
        $("td.label").find(":contains('" + this.value + "')").remove();
    }

});

$('#button').click(function() {
    alert(uniqref());
});


function uniqref() {
    return $("td.label").text().split('').sort().join('').replace(/\s/g, "");
}


});​
var checkCount=0;
var-maxChecks=2;
$(文档).ready(函数(){
$(“#测试”)。单击(函数(){
警报($(':checked')。长度);
});
$(':checkbox[name=checkbox]')。更改(函数(){
checkCount=$(':checkbox:checked')。长度;
如果(检查计数>=maxChecks){
$(':checkbox[name=checkbox]')。不(':checked').attr('disabled',true);
$(“:radio[value=“+uniqref()+”]).prop('checked',true);
}否则{
$(':checkbox[name=checkbox]:disabled').attr('disabled',false);
}
如果(选中此项){
$(“td.label”).append(“+this.value+”);
}否则{
$(“td.label”).find(“:contains(““+this.value+”)”)”).remove();
}
});
$(“#按钮”)。单击(函数(){
警报(uniqref());
});
函数uniqref(){
返回$(“td.label”).text().split(“”).sort().join(“”).replace(/\s/g,“”);
}
});​
更新:输入错误正确,但问题仍然存在。


是的,这真的很傻:这只是一个打字错误

$(":radio[value="+unigref()+"]").prop('checked', true);
应该是

$(":radio[value="+uniqref()+"]").prop('checked', true);
用小写的
Q
代替
G


另外,在实际更新td.label的值之前调用uniqref()

应按以下顺序排列:

if (this.checked) {            
    // ...
}

if (checkCount >= maxChecks) {            
    // ...
}

基本上这一行:

$(":radio[value="+uniqref()+"]").prop('checked', true);
过早调用(在实际选中复选框之前)。一个简单而丑陋的黑客:

setTimeout(function(next) {               
     $(":radio[value="+uniqref()+"]").prop('checked', true);    
}, 0);
解决它

正如Niko提到的,你也有一个打字错误。

不需要黑客。


p、 美国:只适用于前两台收音机,因为并非所有的ID都设置正确;-)

我希望是这样,但遗憾的是,纠正错误仍然不能解决问题:谢谢!我整个周末都在做这个!我会记下你是正确答案。谢谢(为Niko感到难过,我是否能感谢他的意见?@SajeevShanmuganandarajah别担心,你应该选择能为主要故障提供解决方案的答案;-)绝对是一个更优雅的解决方案