为var创建一个数组

时间:2016-02-03 07:42:50

标签: javascript

当你点击这些div之外的任何地方时,这应该关闭数组中列出的所有div,但它不起作用。

如果我要点击不是div1,div2,div3,div4的任何地方,那么所有这些div应该关闭。

$(document).mouseup(function (e)
{
    var container = $["#div1," "#div2", "#div3", "#div4"];

    if (!container.is(e.target) 
        && container.has(e.target).length === 0) 
    {
        container.hide();
    }
});

我可以在自己的脚本标签中使它适用于各个div,但是我必须多次重现这段代码,这不是很整洁。

$(document).mouseup(function (e)
{
    var container = $("#div1");

    if (!container.is(e.target) 
        && container.has(e.target).length === 0) 
    {
        container.hide();
    }
});
$(document).mouseup(function (e)
{
    var container = $("#div2");

    if (!container.is(e.target) 
        && container.has(e.target).length === 0) 
    {
        container.hide();
    }
});
$(document).mouseup(function (e)
{
    var container = $("#div3");

    if (!container.is(e.target) 
        && container.has(e.target).length === 0) 
    {
        container.hide();
    }
});
$(document).mouseup(function (e)
{
    var container = $("#div4");

    if (!container.is(e.target) 
        && container.has(e.target).length === 0) 
    {
        container.hide();
    }
});

将这些#divs分组的正确解决方案是什么?

3 个答案:

答案 0 :(得分:2)

您的选择器错误 - 使用圆括号并将所有逗号分隔的ID放在引号之间,如下所示:

var container = $("#div1, #div2, #div3, #div4");

然后关于container变量的所有函数都会影响所有这些元素。

答案 1 :(得分:0)

试试这个:

 $(document).mouseup(function (e)
{
  var container = ["#div1", "#div2", "#div3", "#div4"];
  for(var i=0;i<container.length;i++)
 {
    if (!$(container[i]).is(e.target) 
    && $(container[i]).has(e.target).length === 0) 
    {
    $(container[i]).hide();
    }
 }
 });

答案 2 :(得分:0)

你可以这样做。

JS:

{01-02-2016,02-02-2016,03-02-2016,04-02-2016,05-02-2016,06-02-2016,07-02-2016,08-02-2016,09-02-2016,10-02-2016}.

HTML:

$(document).not($("#div1, #div2, #div3, #div4")).on('click',function(){

   $(".test").hide();

})