2012-12-09 64 views
2

對不起,但我是新來的jquery,並試圖找出。先謝謝了。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格式來註冊新選定的單選按鈕?或者選擇可以註冊更改的單選按鈕的不同方式?

+0

對於客戶端問題,有一個有用的在線工具稱爲http://jsfiddle.net,允許您發佈關於您的問題的工作演示。 – SaidbakR

+0

爲什麼不把你的功能連接成可重複使用的功能,然後用這種方法調用它們呢? https://github.com/rhyneandrew/Conversation.JS當你不使用明確的調用時,它使它更容易維護和調試 –

回答

3

您可以觸發使用.trigger()更改事件:

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

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

另外,不要使用input:radioinput:radio不是CSS選擇器,不會被document.querySelector支持,因此它將比input[type="radio"]運行速度慢。

我建議你重新考慮你的佈局。每次只需稍作更改,您就不必重複相同的代碼塊。

+0

你是對的,並且在我習慣的任何其他語言中,我不會。我仍然在處理很多這樣的JavaScript基礎知識。哦,謝謝你的迴應,以及一個很棒的節目。我愛攪拌機。 – SupremeGunman

+0

這確實會改變價格,但它總是從每個組中的最後一個單選按鈕獲取價格,而不是選定的單選按鈕。有什麼想法嗎? – SupremeGunman

+0

@SupremeGunman:這很可能是你的代碼有問題。你不應該經常重複相同的代碼塊。 – Blender