簡體   English   中英

將onclick添加到元素,但保持當前的onclick事件

[英]Add onclick to element, but keep current onclick event

是否可以將JavaScript事件添加到已經具有onclick事件的DOM元素中,但我想保留該事件屬性。

我有這樣的單選按鈕:

<input type="radio" name="checkout-payment" value="56" id="checkout-payment-56" class="checkout-radio checkout-payment-radio checkout-payment-radio" onclick="paymentChanged(this);" />

我要在其中添加

window.location.href=window.location.href

同時保留原始的onclick,但我無法訪問html,只能通過javascript進行修改。

所以我想要的代碼將是

<input type="radio" name="checkout-payment" value="56" id="checkout-payment-56" class="checkout-radio checkout-payment-radio checkout-payment-radio" onclick="paymentChanged(this); window.location.href=window.location.href" />

您可以嘗試:

var curHandler = $('#checkout-payment-56').attr("onclick");
    $('#checkout-payment-56')[0].onclick = null;
    $('#checkout-payment-56').click(function () {
       window.location.href=window.location.href;
    });

包裝

window.location.href=window.location.href

在功能上,讓我們稱之為

onRadioButtonClick()

然后,做

var self = this; //keep the context of the file
$("[name=checkout-payment]").on('click', function () {
       onRadioButtonClick.call(self); //call the method with the normal context.
      //continue code..

});

如果要將其添加到每個.webshop-checkout input[type="radio"] ,則可以采用以下方式:

$('.webshop-checkout input[type="radio"]').click(function(){
    window.location.href=window.location.href;
});

JS小提琴演示

實際上,我發現有一種更簡單的方法可以達到我想要的結果。

    $( '.webshop-checkout input[type="radio"]' ).click(function() {
  location.reload(true);
});

對不起,我在原始帖子中不清楚,並且已對其進行了編輯。

 $("#checkout-payment-56" ).bind( "click", function(evt) {
       console.log('that works');
     //sessionStorage.setItem(evt.target.id,evt.target.className);
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM