我有一個 jQuery 函式,它可以捕獲輸入欄位的更改并將其添加到變數中。
輸入欄位還保留在基于香草 js 的 API 庫上,我無法將其轉換為 jQuery。該庫是一個地址 API,因此人們可以選擇一個地址,這不會觸發我的 jQuery 函式。因此,我想到了一個解決方法,我的 jQuery 正在監視我的 vanilla js,查看它何時被觸發,然后立即觸發我的 jQuery 函式。
我的 jQuery 函式:
$('#billing_address_1').on('input',function(e){
let addressValue = $('#billing_address_1').val();
});
我的香草js功能:
"use strict"
dawaAutocomplete.dawaAutocomplete( document.getElementById("billing_address_1"), {
select: function(selected) {
document.getElementById("valgtadresse").innerHTML = selected.tekst;
}
});
在這種情況下,我能夠搜索的所有解決方案都要求我在我的 vanilla js 上使用 .trigger() 。它們不是為這兩種 js 替代方案的混合而設計的。我可以用更合適的方式來做嗎?
uj5u.com熱心網友回復:
如果您不想用觸發器觸摸您的欄位,您可以嘗試在節點中非常流行的事件發射器模式。在這里,您保留一個物件作為您呼叫事件的通知器,并為該事件掛鉤偵聽器。它基本上是一個Pub-Sub模式,一個簡單的實作,在 vanilla javascript 中可以通過mudge獲得,或者如果你發現你也可以嘗試任何替代方案
// KEEP THIS SOMEWHERE IN OUTER SCOPE
let bird = new EventEmitter()
//THEN - hook on any event you name it
bird.on('tweet', (val)=>{
console.log(val)
addressValue = val
})
//THEN - emit that named event wherever you might need
dawaAutocomplete.dawaAutocomplete( document.getElementById("billing_address_1"), {
select: function(selected) {
document.getElementById("valgtadresse").innerHTML = selected.tekst;
bird.emit('tweet', selected.tekst);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/446494.html
標籤:javascript jQuery
上一篇:用陣列映射替換單詞
