jQuery .val()在设置后立即产生undefined

jQuery .val() yielding undefined right after setting

本文关键字:undefined 设置 val jQuery      更新时间:2023-09-26

在我的Javascript中,我有以下代码(为了简洁而编辑):

var data = {
    ...
    listtoken: $(this).attr('data-token')
}
$("#qtip-search-"+ data.listtoken +"-content .search-input").val("example");
console.log($("#qtip-search-"+ data.listtoken +"-content .search-input").val());

console.log返回未定义,但如果我在Chrome的控制台中运行相同的语句,它会产生example

有人知道为什么会发生这种情况吗?JavaScript在HTML加载后肯定会触发,并且日志语句在Chrome的控制台中工作,但在代码中它输出undefined

$(this)似乎引用data对象在listtoken: $(this).attr('data-token'),而不是一个jQuery对象?如果data没有.attr属性,会返回undefined吗?

不清楚this是否被设置为一个jQuery对象或元素在data的另一个属性不包括在问题?

var data = {
  listtoken: function() {console.log(this, $(this).attr())}
}
data.listtoken()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>


var data = {
  listtoken: function() {console.log(this); return this},
  attr: function() {console.log(this.token)},
  token: 123
}
data.listtoken().attr()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>