2

很抱歉打扰,但我是 jquery 的新手并试图解决这个问题。先谢谢了。

我有一个网页,里面有几组基于几个计算机组件的单选按钮。我的页面顶部有一些图像会触发某些单选按钮被按下。我为此使用的javascript是:

$( document ).ready( function() {
$('img#gaming').click(function () {
    $('.small_image').attr("src","../img/GamingPlain.png");
    $('input:radio[name=chasis]')[2].checked = true;
    $('input:radio[name=cpu]')[1].checked = true;
    $('input:radio[name=mobo]')[1].checked = true;
    $('input:radio[name=ram]')[1].checked = true;
    $('input:radio[name=gpu]')[1].checked = true;
    $('input:radio[name=psu]')[1].checked = true;
    $('input:radio[name=hdd]')[2].checked = true;
});
.
.
.
});

这可以正常工作。我还必须根据选择的单选按钮更改页面的一部分。它看起来像这样:

$( document ).ready( function() {
$('input[name=chasis]').change(function()  {
    var txt = $(this).parent().text();
    var price = txt.match(/(\$)([\d]+)/)
    $('span#chasisprice').text(price[0]);
});

$('input[name=cpu]').change(function()  {
    var txt = $(this).parent().text();
    var price = txt.match(/(\$)([0-9]+)/)
    $('span#cpuprice').text(price[0]);
});
.
.
.

});

这也可以正常工作。但是,当我使用第一段代码(用户单击“img#gaming”)选择自动选择单个单选按钮时,第二段代码不会触发(也就是未注册更改)。

是否有其他形式的 .change 可以注册新选择的单选按钮?或选择将注册更改的单选按钮的不同方式?

4

1 回答 1

3

您可以使用以下方式触发更改事件.trigger()

...
$('input:radio[name=psu]')[1].checked = true;
$('input:radio[name=hdd]')[2].checked = true;

$('input:radio').trigger('change');

另外,不要使用input:radio. input:radio不是 CSS 选择器,不会被 支持document.querySelector,因此它的运行速度会比input[type="radio"].

我建议你重新考虑你的布局。您不必每次都重复相同的代码块,只需进行微小的更改。

于 2012-12-09T22:32:00.650 回答