我有国家的标记系统。用户可以通过输入执行查询,查询结果显示为下拉框,单击其中一个结果后,将重置查询并将国家/地区名称“附加”到输入。
这个系统看起来很像Stackoverflow的问号标记系统。我已经完成了所有这些步骤,除了一个,即在输入未聚焦时关闭菜单(这基本上意味着输入外的每次点击都应该关闭查询菜单。)
下面的代码负责将所有国家/地区添加到查询菜单中,注意 tagItem.onclick 事件定义,一旦点击了标记,它就会“附加”到输入中。
QObject
要捕获输入之外的点击事件,我认为最新的选项是$.each(data.countries, function(i, item) {
var listItem = document.createElement("li");
var tagItem = document.createElement("span");
tagItem.innerHTML = item;
tagItem.onclick = function() { add_tag(item); };
tagItem.style.cursor = "pointer";
tagItem.className = "reg_c_interest_tag";
listItem.appendChild(tagItem);
document.getElementById("reg_c_interest_queryresult").appendChild(listItem);
});
事件:
$(selector).focusout
不幸的是,这两个事件相互干扰,$("#reg_c_interest_editor").focusout(function () {
$("#reg_c_interest_queryresult").empty();
});
事件的注册速度比focusout
事件更快,因此在用户点击任何标记onclick
功能之前清空该菜单。
我知道我应该使用Jquery的focusout
,但我不确定如何在迭代过程中完成。
如何确定这些$(selector).click
事件的优先顺序?因此onclick
函数仅在focusout
为时执行。
谢谢!