我新添加的按钮 returns 的值未定义或根本没有
The value of my newly appended button returns undefined or nothing at all
我正在尝试获取新添加的按钮的值,但它总是记录未定义或什么都不记录。我尝试了很多方法,例如 .val()、.textContent 和 .value,正如我在此处找到的那样。
这是我的代码。
}).done(function (response) {
var lat = response.data[0].latitude;
var long = response.data[0].longitude;
//Appends new button based on recent search
searchHistory.append(`<button class="col-12 btn border-info m-1" id="prevSearch">${textInput.val().toLowerCase().split(' ').map((s) => s.charAt(0).toUpperCase() + s.substring(1)).join(' ')}</button>`);
var previousSearch = $("#prevSearch");
previousSearch.on('click', () => {
console.log($(this).val();
console.log(document.getElementById("prevSearch").textContent);
})
})
点击功能下的第一个日志returns未定义,而第二个returns实际内容。但是,它仅适用于我尝试 console.log("test")
.
时附加的第一个按钮
所以总而言之,我有 2 个问题,我无法获取按钮的值,并且在使用简单的控制台日志进行测试时只有第一个按钮有效。
如有任何帮助,我们将不胜感激。
您正在通过 ID 获取按钮。如果您要添加具有相同 ID 的多个元素,那将不起作用,因为 ID 在文档中必须是唯一的。
至于你的按钮值,我会说只使用 $(this).text()
。浏览器支持元素内容,因为 HTMLButtonElement.value
历史不完整。
我只使用以下内容
const button = $("<button>", {
type: "button",
"class": "prevSearch col-12 btn border-info m-1",
text: textInput.val().replace(/(^| )[a-z]/g, c => c.toUpperCase())
}).appendTo(searchHistory)
button.on("click", function() {
console.log($(this).text())
})
您还可以将事件处理移至此代码之外的委托处理程序,该处理程序可以处理所有当前和未来的按钮点击
searchHistory.on("click", ".prevSearch", function() {
console.log($(this).text())
})
我正在尝试获取新添加的按钮的值,但它总是记录未定义或什么都不记录。我尝试了很多方法,例如 .val()、.textContent 和 .value,正如我在此处找到的那样。
这是我的代码。
}).done(function (response) {
var lat = response.data[0].latitude;
var long = response.data[0].longitude;
//Appends new button based on recent search
searchHistory.append(`<button class="col-12 btn border-info m-1" id="prevSearch">${textInput.val().toLowerCase().split(' ').map((s) => s.charAt(0).toUpperCase() + s.substring(1)).join(' ')}</button>`);
var previousSearch = $("#prevSearch");
previousSearch.on('click', () => {
console.log($(this).val();
console.log(document.getElementById("prevSearch").textContent);
})
})
点击功能下的第一个日志returns未定义,而第二个returns实际内容。但是,它仅适用于我尝试 console.log("test")
.
所以总而言之,我有 2 个问题,我无法获取按钮的值,并且在使用简单的控制台日志进行测试时只有第一个按钮有效。
如有任何帮助,我们将不胜感激。
您正在通过 ID 获取按钮。如果您要添加具有相同 ID 的多个元素,那将不起作用,因为 ID 在文档中必须是唯一的。
至于你的按钮值,我会说只使用 $(this).text()
。浏览器支持元素内容,因为 HTMLButtonElement.value
历史不完整。
我只使用以下内容
const button = $("<button>", {
type: "button",
"class": "prevSearch col-12 btn border-info m-1",
text: textInput.val().replace(/(^| )[a-z]/g, c => c.toUpperCase())
}).appendTo(searchHistory)
button.on("click", function() {
console.log($(this).text())
})
您还可以将事件处理移至此代码之外的委托处理程序,该处理程序可以处理所有当前和未来的按钮点击
searchHistory.on("click", ".prevSearch", function() {
console.log($(this).text())
})