在我的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
。
答案 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;
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;