$(this)如何知道我的目标是什么?

时间:2017-11-16 02:56:55

标签: javascript jquery jquery-ui

$(this).keyup如何知道我想要与#searchString输入关联的keyup侦听器,而不是父div?不是$(this)代表父div吗?我将$(this)转储到控制台,它看起来像是父div的对象。

长话短说:

这是如何工作的? $(this).keyup

而不是明确地说:$('#searchString').keyup ??

$('<div id="msg">' + <input id="searchString" name="searchString" type="text" value="" /> + '</div>').dialog({

    open: function () {

        $(this).keyup(function (e) {
            if (e.keyCode == $.ui.keyCode.ENTER)
                $('#btnFind').click();
            return false;
        })

    },

    buttons: [
        {
            text: "Find",
            id: "btnFind",
            icon: "ui-icon-search",
            click: function () {
                //do stuff
            }
        }
    ]
});

1 个答案:

答案 0 :(得分:0)

进行了一些测试;这是我的观察:

  • $(this)代表父<div id="msg">
  • $(this).keyup定位我添加到<div id="msg">
  • 的所有(和所有)额外输入
  • 认为这是事件bubbling/capturing(侦听器未嵌套):
    • $('#btnFind').click();是嵌套在keyup侦听器中的操作
    • jQuery UI对话框按钮id: "btnFind"在父<div id="msg">
    • 之外有一个单独的事件监听器
  • 我继续并明确指出了听众的目标:$('#searchString').keyup

谁在乎?

好吧,我没想到你可以通过对话框打开事件在输入上建立事件监听器。我正在即时创建对话框,我的假设是当open事件试图建立事件监听器时输入可能不存在。