0

我有一个下拉菜单,将通过调用 blur() 将其关闭。如果您单击下拉菜单以外的其他位置,它应该被关闭。

现在我想添加一个函数,所以如果你点击其他地方,下拉菜单仍然会关闭,除非你点击 div 调用<div class="changeask"></div>

$(document).ready(function () {
    $(document).delegate("*", "mousedown touchend", function (e) {
        var target = $(e.target).closest("div.select2-container").get(0), attr;
        if (target) {
            $(document).find("div.select2-container-active").each(function () {
                if (this !== target ) $(this).data("select2").blur();
            });
        } else {
            target = $(e.target).closest("div.select2-drop").get(0);
            var changeask = $("div.changeask");
            $(document).find("div.select2-drop-active").each(function () {
                if (this !== target && this !== changeask) $(this).data("select2").blur();
            });
        }

这是我现在拥有的代码...我尝试了很多方法,但是一旦我单击下拉菜单以外的其他位置,它仍然会关闭。

有任何想法吗?

我试图修改这样的代码:

$(document).ready(function () {
    $(document).delegate("*", "mousedown touchend", function (e) {
        var target = $(e.target).closest("div.select2-container").get(0), attr;
        var changeask = $(e.target).closest('.changeask').length != 0;

        if (target) {
            $(document).find("div.select2-container-active").each(function () {
                if (this !== target && this!== changeask ) $(this).data("select2").blur();
            });
        } else {
            target = $(e.target).closest("div.select2-drop").get(0);
            $(document).find("div.select2-drop-active").each(function () {
                if (this !== target && this!== changeask) $(this).data("select2").blur();
            });
        }

但仍然无法正常工作...感谢您的帮助..我真的很感激

4

2 回答 2

4

如何检查点击是否发生在changeask div内

$(document).click(function(e){
   if($(e.target).closest('.changeask').length != 0) return false;
   $('.changeask').hide();
});
于 2012-11-07T06:53:20.923 回答
1

如果单击发生在不是下拉列表或 changeask div 的元素中,您可以尝试仅触发事件:

$(document).on("mousedown touchend","*:not(.changeask, .yourselect)",function(e){
...
})
于 2012-11-07T06:58:21.287 回答