包含jQuery对象的变量的作用域(通过选择器)不是全局的
有人能告诉我为什么下面代码中$mytextarea的作用域没有扩展到getAnswerToo()函数中吗 getAnswer()之所以有效,是因为我显式地选择了要更新的元素。但是,尝试使用全局“handler”变量不起作用 我假设变量范围的问题与它持有jQuery对象的事实具体相关。另一个变量myurl工作正常 非常感谢任何帮助包含jQuery对象的变量的作用域(通过选择器)不是全局的,jquery,global-variables,Jquery,Global Variables,有人能告诉我为什么下面代码中$mytextarea的作用域没有扩展到getAnswerToo()函数中吗 getAnswer()之所以有效,是因为我显式地选择了要更新的元素。但是,尝试使用全局“handler”变量不起作用 我假设变量范围的问题与它持有jQuery对象的事实具体相关。另一个变量myurl工作正常 非常感谢任何帮助 var myurl = "php/getAnswer.php"; var $mytextarea = null; // a handler for the tex
var myurl = "php/getAnswer.php";
var $mytextarea = null; // a handler for the textarea element
$mytextarea = $('textarea#mytextarea');
getAnswerToo();
function getAnswer(){ // works
var request = $.ajax({
url: myurl,
type: "POST",
data: {question: questionId, user: userId},
dataType: "html",
success: function(data) {
$('textarea#mytextarea').val(unescape(data));
}
});
}
function getAnswerToo(){ // doesn't work
var request = $.ajax({
url: myurl,
type: "POST",
data: {question: questionId, user: userId},
dataType: "html",
success: function(data) {
$mytextarea.val(unescape(data));
}
});
}
这个放在哪里
$mytextarea = $('textarea#mytextarea');
选择器在DOM初始化时工作。
这应该起作用:
$(function() {
$mytextarea = $('textarea#mytextarea');
getAnswerToo();
});
$('textarea#mytextarea')
返回空数组,因为DOM尚未初始化。在DOM准备就绪后,将调用整个代码,并在代码块中封装整个代码。当然感谢Aktee和Amareswar!当您记住jQuery选择器只能在DOM初始化后引用对象时,这是完全有意义的。我会愚蠢地将代码放在documentready函数之外。