用jQuery引用立即选择器对象?

sli*_*khi 5 javascript jquery

我正在尝试学习一些jQuery,并使用以下代码设置测试页面:

<a id='encode' href='javascript: void(0)'>encode</a> |  
<a id='decode' href='javascript: void(0)'>decode</a> | 
<br/>
<textarea id='randomString' cols='100' rows='5'></textarea>

<script type='text/javascript'>
$(document.ready(function () {
  $('#encode').click(function() {
    $('#randomString').val(escape($('#randomString').val()));
  });
  $('#decode').click(function() {
    $('#randomString').val(unescape($('#randomString').val()));
  });     
});
</script>
Run Code Online (Sandbox Code Playgroud)

我的想法是我可以在textarea中放置一些东西,然后点击"编码"或"解码",它将要么逃避或者忽略我放入textarea的东西.

这段代码工作正常,但我的问题与我如何更改textarea的值有关.在我的代码中,我选择了两次textarea值:一次(un)转义它,再一次改变值.IMO这看起来很笨拙,也许没必要.我想也许我可以这样做:

$('#randomString').val(escape(this));
Run Code Online (Sandbox Code Playgroud)

this似乎是指我点击的链接的对象,而不是#randomString选择器,所以是否有一些其他可以用来引用它的魔术词$('#randomString')

Fis*_*rdo 1

如果我理解正确的话,简短的答案是否定的。没有办法引用$('#randomString')你正在谈论的地方。它只是该val方法的一个参数,因此它只是简单的 JavaScript 语法,没有 jQuery“魔法”。

为了完成手头的任务并使代码更干净、更简洁,我会保存 jQuery 对象,这样#randomString您就不必继续创建它:

$(document.ready(function () {
    var $rndStr = $('#randomString');

    $('#encode').click(function() {
        $rndStr.val(escape($rndStr.val()));
    });

    $('#decode').click(function() {
        $('#rndStr').val(unescape($rndStr.val()));
    });     
});
Run Code Online (Sandbox Code Playgroud)