我有按鈕可以在點擊時創建一個 div。當我單擊一個按鈕時,我想回傳這個創建的 div。但是下面的代碼實際上回傳了這個按鈕。
var create = $('#create').on('click', function(e){
var content = $('<div />')
return content
})
var test = create.trigger('click')
console.log(test)
結果是:
init [div#create, context: document, selector: '#create']
這樣做是不可能的,還是我錯過了什么?
uj5u.com熱心網友回復:
不,這是不可能的。您可以添加一個將在事件處理程式中執行的函式,以對您在偵聽器中創建的物件執行某些操作:
var create = $('#create').on('click', function(e){
var content = $('<div />')
doSomething(content)
})
create.trigger('click')
function doSomething(test) {
console.log(test)
}
沒有其他方法,這是因為.on()當瀏覽器觸發事件??(或您使用.trigger()方法)時會呼叫分配有方法的處理程式函式,并且回傳陳述句僅用于強制呼叫event.stopPropagation()和event.preventDefault()方法(您必須false在處理程式中回傳或只需分配false而不是函式作為事件處理程式 - 檢查檔案,事件處理程式及其環境部分),并且在手動觸發事件時不要回傳任何值。
您還可以使用外部變數將“生成”的資料存盤在您的事件處理程式中:
const divs = []
var create = $('#create').on('click', function(e){
var content = $('<div />')
divs.push(content)
doSomething()
})
create.trigger('click')
function doSomething() {
console.dir(divs)
}
uj5u.com熱心網友回復:
您正在呼叫一個變數(“create”),該變數將事件偵聽器存盤在按鈕上。這是它的樣子:
var test = $('#create').on('click', function(e){
var content = $('<div />')
return content
}).trigger('click')
console.log(test)
這是解決方案:
jQuery
var create = function() {
return $('<div />');
};
var createEl = $('#create');
createEl.on('click', function() {
console.log(create());
// <div ></div>
});
createEl.trigger("click");
JavaScript
var create = function() {
var el = document.createElement('div');
el.className = "foo";
// Add other attributes if you'd like
return el;
};
var createEl = document.querySelector('#create');
createEl.addEventListener("click", function() {
console.log(create());
// <div ></div>
});
createEl.click();
(jQuery) 現場示例
var create = function() {
return $('<div />');
};
var createEl = $('#create');
createEl.on('click', function() {
console.log(create());
// <div ></div>
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<button id="create">Create</button>
(JavaScript) 現場示例
var create = function() {
var el = document.createElement('div');
el.className = "foo";
// Add other attributes if you'd like
return el;
};
var createEl = document.querySelector('#create');
createEl.addEventListener("click", function() {
console.log(create());
// <div ></div>
});
createEl.trigger("click");
var create = function() {
var el = document.createElement('div');
el.className = "foo";
// Add other attributes if you'd like
return el;
};
var createEl = document.querySelector('#create');
createEl.addEventListener("click", function() {
console.log(create());
// <div ></div>
});
<button id="create">Create</button>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349519.html
標籤:javascript html 查询
下一篇:每行和每列僅選擇一個表格單元格
