保存 jQuery 对象(通过选择器)的变量的作用域不是全局的



谁能告诉我为什么下面的代码中$mytextarea的范围没有扩展到getAnswerToo()函数?

getAnswer() 之所以有效,是因为我明确选择了要更新的元素。但是,尝试使用全局"处理程序"变量不起作用。

我假设变量范围的这个问题与它包含 jQuery 对象的事实特别相关。另一个变量 myurl 工作正常。

任何帮助非常感谢!

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 尚未初始化。用 in 代码块包装整个代码,同时将在 DOM 准备就绪后调用。

相关内容

  • 没有找到相关文章

最新更新