Я пытаюсь использовать функцию 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 Это, конечно, очень упрощенная версия моей проблемы.