为什么这个jQuery输入选择器需要一个过滤器解决方法



下面一行这在我的firefox/firebug代码中不起作用(但在JSFIDDLE中效果很好),你会看到下面我有一个解决方案,只是想知道是否有人知道内部原因?

var checkedVal = parseInt($('input[@name=' + uniqueNamePart + 'currDim]:checked').val(), 10);

http://jsfiddle.net/darrenshrwd/eqh2y/43/

<input type="radio" value="1" name="blahcurrDim">One
<input type="radio" checked="" value="2" name="blahcurrDim">Two
<input type="radio" value="3" name="blahcurrDim">Three
<input type="radio" value="4" name="blahcurrDim">Four

​...

$('document').ready(
function() {
    var uniqueNamePart = "blah";
    var dimensionClick = function() {
        // This does NOT work in my code in firefox/firebug (but works fine in JSFIDDLE):
        var checkedVal = parseInt($('input[@name=' + uniqueNamePart + 'currDim]:checked').val(), 10);
        // This does work in both:
        //var myRadio = $('input[name=' + uniqueNamePart  + 'currDim]'),
        //    checkedVal = parseInt(myRadio.filter(':checked').val(), 10);        
        alert(checkedVal);
    };
    $('input[name=' + uniqueNamePart + 'currDim]:radio').click(dimensionClick);
});

您的属性选择器格式不正确。不需要@字符:

var checkedVal
    = parseInt($('input[name=' + uniqueNamePart + 'currDim]:checked').val(), 10);

该代码似乎在你的小提琴中工作,但这是因为那里唯一的<input>元素是单选按钮,所以即使忽略无效的属性选择器,匹配也会成功。

相关内容

最新更新