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

时间:2015-08-28 00:31:19

标签: javascript jquery

在我的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返回undefined,但如果我在Chrome控制台中运行相同的语句,则会产生example

任何人都知道为什么会发生这种情况?加载HTML后,JavaScript肯定会触发,日志语句可以在Chrome控制台中运行,但在代码中输出undefined

1 个答案:

答案 0 :(得分:0)

$(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>
&#13;
&#13;
&#13;

&#13;
&#13;
var data = {
  listtoken: function() {console.log(this); return this},
  attr: function() {console.log(this.token)},
  token: 123
}

data.listtoken().attr()
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;