jquery - 持有 jQuery 对象的变量范围(通过选择器)不是全局的

标签 jquery global-variables

谁能告诉我为什么下面代码中 $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();
});

关于jquery - 持有 jQuery 对象的变量范围(通过选择器)不是全局的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12844510/

相关文章:

dart - Dart 中的全局变量

objective-c - 在 Objective-C 应用程序中保留 session ID

c - 未使用的 volatile 变量

c++ - 使用全局变量在不同的编译单元中初始化其他全局变量

javascript - jQuery按钮一键二功能

Javascript-slidesjs 不适用于 Android(其他都可以)

jquery - jQuery 不会在禁用的按钮上触发悬停事件吗?

javascript - <br> 当我 alert() PRE 标签的内容时被删除

javascript - 使用 jQuery 将鼠标悬停在文本上进行切换

javascript - 无法设置未定义的属性 - JavaScript 中的全局对象和命名空间