Функция jQuery data () в GreaseMonkey - PullRequest
       11

Функция jQuery data () в GreaseMonkey

1 голос
/ 16 ноября 2009

Я пытаюсь использовать функцию jQuery data () для хранения и получения данных об элементе. Я хочу получить данные, хранящиеся в текстовой области, всякий раз, когда пользователь вводит пробел 1 . Однако каждый раз, когда я делаю это, я получаю undefined обратно от data().

Теперь, если я определю точно такой же Javascript в HTML , он будет работать, как и ожидалось. Есть ли какая-то «ошибка» в data(), которая мешает ей работать в GreaseMonkey?

Вот скрипт GreaseMonkey:

(function(){
  //boilerplate greasemonkey to wait until jQuery is defined...
  function GM_wait()
  {
    if(typeof unsafeWindow.jQuery == 'undefined') {
      window.setTimeout(GM_wait,100);
    } else {
      var $ = unsafeWindow.jQuery;
      $(function() { letsJQuery($); });
    }
  }
  GM_wait();

  function letsJQuery($)
  {
    //store the data initially
    $('textarea[name=comment]').data('tst', 'abc');

    //retrieve the data on spacebar
    $('textarea[name=comment]').live('keypress', function(e) {
      if(e.which == 0x20) { //spacebar
        alert("the stored data is: " + $(this).data('tst'));
        return false;
      }
    });
  }
})();

А вот мой очень простой тестовый HTML-файл:

<html>
<head>
<script type="text/javascript"
  src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<textarea name="comment"></textarea>
</body>
</html>

1 Это, конечно, очень упрощенная версия моей проблемы.

1 Ответ

1 голос
/ 17 ноября 2009

Должно работать следующее:

  function letsJQuery($)
  {
    //store the data initially
    var ta = $('textarea[name=longtext]').data('tst', 'abc');

    //retrieve the data on spacebar
    ta.live('keypress', function(e) {
      if(e.which == 0x20) { //spacebar
        alert("the stored data is: " + ta.data('tst'));
        return false;
      }
    });
  }
...