2012-07-26 60 views
0

下面这行不能在firefox/firebug中的代码中工作(但在JSFIDDLE中工作正常),您将在下面看到我有一个解决方法,只是想知道是否有人知道内部原因是什么?为什么这个jQuery输入选择器需要过滤器解决方法

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); 

}); 

回答

3

attribute selector的格式不正确。一个@性格是没有必要的:

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

该代码将出现在您的提琴的工作,但是这是因为只有<input>元素有单选按钮,这样即使无效的属性选择器被忽略匹配成功。

+0

完全正确...这就是我从复制另一个stackoverflow问题所得到的结果。 – Darren 2012-07-26 06:54:59

相关问题