更快的Javascript文本替换

Cie*_*iel 2 jquery

给出以下javascript(jquery)

        $("#username").keyup(function () {
            selected.username = $("#username").val();

            var url = selected.protocol +
                (selected.prepend == true ? selected.username : selected.url) + "/" +
                (selected.prepend == true ? selected.url : selected.username);

            $("#identifier").val(url);
        });
Run Code Online (Sandbox Code Playgroud)

此代码基本上读取文本框(用户名),当键入时,它会重新构建在另一个文本框(标识符)中显示的URL.

这很好 - 它的功能没有问题.然而,它感觉"缓慢"和"迟钝".有没有更清洁/更快的方法来完成这项任务?

这是请求的HTML.

<fieldset class="identifier delta">
    <form action="/authenticate/openid" method="post" target="_top" >
        <input type="text" class="openid" id="identifier" name="identifier" readonly="readonly" />
        <input type='text' id='username' name='username' class="left" style='display: none;'/>
        <input type="submit" value="Login" style="height: 32px; padding-top: 1px; margin-right: 0px;" class="login right" />
    </form>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

标识符文本框仅具有基于按钮的超链接锚点设置的值.

Mas*_*ity 5

缓存你的jquery对象......

var username = $('#username'),
    identifier = $('#identifier');

username.keyup(function () {
    selected.username = username.val();

    var url = selected.protocol +
        (selected.prepend == true ? selected.username : selected.url) + "/" +
        (selected.prepend == true ? selected.url : selected.username);

    identifier.val(url);
});
Run Code Online (Sandbox Code Playgroud)

您目前正在每次击键时搜索dom两次.