2013-12-20 98 views
3

長時間潛伏在這裏問我的第一個公開問題,因爲我真的被卡住了。Javascript只發射一次

我正在使用託管的購物車平臺,因此我只能訪問某些指定的div中的代碼。我有一個JavaScript代碼,我打電話給外部(因爲內聯是壞的,除非你必須,對嗎?)

所以我的問題是,有一個<select>下拉,我沒有直接訪問更改HTML和愚蠢的購物車平臺沒有給它一個id,只有name屬性被設置。

我需要清除<div id="result_div">當點擊<select name="ShippingSpeedChoice">下拉的時候,所以我必須:

$("[name=ShippingSpeedChoice]").change(function(e) { $("#result_div").empty(); });

它觸發一次,但僅此而已。我的問題是,每次點擊<select name="ShippingSpeedChoice">時,我如何才能讓它啓動?

這裏的所有相關的JavaScript(在情況下,它防止#result_div撥開某處):

$("[name=ShippingSpeedChoice]").change(function(e) { 
     $("#result_div").empty(); 
    }); 

    $("#btn_calc").click(function(e) {  /// onclick on Calculate Delivery Date button 

在此先感謝,任何幫助表示讚賞!

+3

您希望每次點擊它時都會觸發它,即使它們沒有更改該值?將它綁定到'click'事件而不是'change'事件。 – Barmar

+1

您應該努力將問題中的代碼降至最低。另外你省略了HTML部分。 – j08691

+0

您還可以檢查select元素是否在第一次點擊和第二次點擊之間重新創建....如果有的話請看看事件代理 –

回答

0

我仍然無法使用name屬性調用的函數,所以我找到了一個辦法解決它通過使用tdShippingSpeedChoice下拉的id是:

$("#DisplayShippingSpeedChoicesTD").change(function(e) { 
     $("#result_div").empty(); 

它現在每次都會發射。非常感謝你的反饋意見&幫助 - 我仍然希望我能弄清楚如何使用name屬性而不是id,但這將是另一天的難題!

1

如果您希望每次單擊元素時都會發生某種情況,請使用.click()而不是.change()。後者僅在從菜單中選擇與以前不同的值時觸發。

$("[name=ShippingSpeedChoice]").click(function(e) { $("#result_div").empty(); }); 
+0

嗨巴爾馬,我已經嘗試'.click'和'。改變' - 老實說,它是在'.click'還是'.change'上觸發我不在乎,重點在於它只會觸發一次,並且需要在每次改變時觸發,或者點擊