2011-04-29 55 views
5

我相信我缺少一些非常明显的东西,因为我是Jquery的新手。我使用jQuery Mobile的有以下标记:Jquery Mobile - 无线电组更改

<div> 
    <input data-theme="c" type="radio" name="radio-choice-1" id="radio-choice-1" value="choice-1" /> 
    <label for="radio-choice-1">Option 1</label> 
</div> 
<div> 
    <input data-theme="c" type="radio" name="radio-choice-1" id="radio-choice-2" value="choice-2" /> 
    <label for="radio-choice-2">Option 2</label> 
</div> 
<div> 
    <input data-theme="c" type="radio" name="radio-choice-1" id="radio-choice-3" value="choice-3" /> 
    <label for="radio-choice-3">Option 3</label> 
</div> 

,我试图执行一个动作的值更改时。

所以我必须:

$(":input[@name='radio-choice-1']").change(function() { 
     alert('clicked'); 
}); 

现在我第一次选择一个选项,则不会触发事件。当我随后改变它时(例如第二,第三等),它会发射,但不是第一个。我认为这是因为它本身没有“改变”,只是给了一个价值。我试图改变它点击,但它永远不会触发。

缺少什么我在这里?任何帮助非常感谢。

+0

可你只是预先选择的选项之一? – jvenema 2011-04-29 12:03:38

+0

很明显,我可以,而且会有效,但这不是我的目标。 – 2011-04-29 12:06:50

+0

你会得到任何错误?如果您在网络浏览器中打开移动网页? – mcgrailm 2011-04-29 12:20:48

回答

4

我认为这将有助于

$(document).ready(function() { 

$(":input[@name='radio-choice-1']").live('change mousedown',function(event) { 
     alert('clicked'); 
}); 

}); 

工作示例这里http://jsfiddle.net/XVuAs/1/

+0

感谢您的回复。我尝试了这一点,并得到了同样的结果(即,第一次更改没有得到任何回应,随后的所有更改都没有)您使用的浏览器是什么?我在Safari 5.0.2中。 – 2011-04-29 12:12:59

+0

@尼克哈特利我已经添加了jsfiddle代码..你可以检查 – 2011-04-29 12:16:24

+0

是的,工作正常。因此必须是一个jQuery的移动问题。忍受我,我会在网上得到一个版本。 – 2011-04-29 12:18:59

1
$('input[type="radio"]').change(function() { 
     alert('clicked'); 
}); 

上面的代码,测试,工作对我来说很好...

+0

感谢您的回应。这不是为我发生的。我尝试了Firefox和Safari,并且遇到同样的问题。第一次点击不会触发该事件,随后的点击会触发该事件。 – 2011-04-29 12:15:33

+0

适合我。谢谢 – Jimmy 2014-05-27 18:34:26

13

活生生的例子:http://jsfiddle.net/wWFGf/2/

替代HTML语法:http://jsfiddle.net/wWFGf/3/

$("[name=radio-choice-1]").change(function() { 
    alert('Selected: '+$('input[name=radio-choice-1]:checked').val()); 
}); 
+0

谢谢。我正在引用alpha 3发布,这可能是我所有问题的根源。它正在工作。 – 2011-04-29 12:58:03

+0

np。作为提示,您希望尽可能保持代码基础尽可能小,因为移动设备上的加载时间会比内存资源更慢。还添加了备用语法 – 2011-04-29 13:03:24

+0

尼克,感谢提到阿尔法3. Dreamweaver CS5.5使用alpha 3,所以我去了jQuery手机网站,并找到了最新的cdn版本。就像你说的那样修正了它。 – 2011-06-22 16:05:18

0

如果你动态加载可能需要做这样的事情的页面:

$('input[type="radio"]').live('changed' function() { 
alert('clicked live'); 
});