0

我需要能够控制实际触发模糊事件的时间。

<div class="selectedcomp"></div>
<input type="text" class="textbox" maxlength="50" id="searchfavs" />
<div id="globalcompanyresultscontainer">
    <div id="globalcompanyresults">
    </div>
</div>

当用户在#searchfavs 中输入查询时,我将结果加载到#globalcompanyresults。当用户单击加载的结果时,我将该结果的 HTML 复制到另一个元素中:

$('#globalcompanyresults').on('click', 'div.company-card img', function () {
    $('#globalcompanyresults').html('');
    $('.selectedcomp').html($(this).parent()[0].outerHTML);
});  

一旦用户在#searchfavs 元素外部单击或按下Tab 键,也会导致#searchfavs 失去焦点,我想清除所有结果,只需调用以下命令:

    $("#searchfavs").blur(function () {
        $('#globalcompanyresults').html('');
    });

但是,一旦用户单击#globalcompanyresults 中的结果,也会调用此函数,引发模糊事件,导致#globalcompanyresults 为空,我无法再访问单击的结果HTML。

onblur,如果单击#globalcompanyresults 中的结果、单击其他地方或按tab 键,则可能不会触发,一切都很好。

4

1 回答 1

1

如果您只想在tab按键被按下时执行逻辑,为什么不响应keydown事件而不是blur事件呢?

$('#searchfavs').keydown(function(e) { 
    if (e.keyCode == 9) {
        $('#globalcompanyresults').html('');
    }
});
于 2013-09-29T20:00:57.307 回答