javascript - jquery 附加 div onclick 第一次不起作用

标签 javascript jquery dom onclick

这是我的代码

html:

<input type="text" class="js-input">  
<div class="js-autofill"></div>

jquery:

var myarray = ['apple' , 'orange'];
myarray.forEach(element => {
$('.js-autofill').append(
`<div class="js-item" data-value="`+element+`">` +element+ `</div>`
)
})

$(document).on('click','.js-item',function(){
$('.js-input').val($(this).attr('data-value'))
})

问题是.js-item onclick第一次不起作用 - 当我双击时它起作用 我找不到原因

最佳答案

您需要将 div 点击的 .val() 更改为 .text()

来自Docs

The .val() method is primarily used to get the values of form elements such as input, select and textarea. When called on an empty collection, it returns undefined.

$('.js-input').val($(this).text())

2 - 附加的 div 字符串的引号不匹配,正确的顺序应如下。

`<div class='js-item' data-value='` + element + `'>` + element + `</div>`

阅读以下内容对您也有帮助:When should I use double or single quotes in JavaScript?


下面的工作代码

var myarray = ['apple', 'orange'];
myarray.forEach(element => {
  $('.js-autofill').append(
    `<div class='js-item' data-value='` + element + `'>` + element + `</div>`
  )
})

$(document).on('click', '.js-item', function() {
  $('.js-input').val($(this).text())
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="js-input">
<div class="js-autofill"></div>

关于javascript - jquery 附加 div onclick 第一次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71571498/

相关文章:

javascript - 如何用JS显示一个元素并隐藏所有其他元素

javascript - 从 DOM 中隐藏数据(保护数据)

javascript - 更改类后单击()

javascript - 试图通过其名称的前缀获取元素

javascript - 将 Javascript getter 作为参数传递

javascript - 如何在 jquery 帖子的回调中重定向

php - 如何阻止 PHP Domdocument::SaveXML 插入 "CDATA"?

javascript - CSS/Jquery OverFlow 隐藏不工作

javascript - 具有不同元素符号和数字颜色的默认 ol 和 li 样式

javascript - ckeditor 错误嵌套 div 错误的解决方法?