jQuery:隐藏动态创建的选择DOM元素

时间:2012-07-06 14:00:12

标签: javascript jquery

在以下代码中:

$(document).ready( function () {
    var hideInit = function () {
            $(selector1).hide();
    }
    var loadInit = function () {
            //get data
            var thingo = $('<div />');
            //populate thingo with a bunch of divs matching selector1
            $(selector2).append(thingo);
    }
    loadInit();
    hideInit();
});

我正在解析一些数据并在loadInit中用它填充DOM,然后我希望.hide刚刚创建的DOM中存在的每个元素与selector1匹配

不幸的是元素没有隐藏 - 我在这里做错了什么?

谢谢!


解决方案

我的选择器并没有像许多人所说的那样不正确,但这是我调用函数的顺序。为了保证hideInitloadInit完成后运行,我会在loadInit的内部调用它。

$(document).ready( function () {
    var hideInit = function () {
            $(selector1).hide();
    }
    var loadInit = function () {
            //get data
            var thingo = $('<div />');
            //populate thingo with a bunch of divs matching selector1
            $(selector2).append(thingo);
            hideInit();
    }
    loadInit();
});

感谢您的意见/答案!


Using jQUery hide() on newly created dom elements

无关

2 个答案:

答案 0 :(得分:1)

这可以通过使用appendfilterhide jQuery方法操作DOM的单行来实现。

  1. $('selector2').append(thingo) - 附加项目
  2. .filter('selector1') - 原始选择器,仅选择与过滤器匹配的那些
  3. .hide() - 隐藏已过滤的项目
  4. 像这样:

    $(function()
    {
        var thingo = $('<div />');
        $('selector2').append(thingo).filter('selector1').hide();
    }
    

    或者,如果您要隐藏附加的项目,则需要在filter之后添加其他链,以便您可以使用find()方法,如下所示:

    // this will hide all child divs, so you may want to be more specific
    $('selector2').append(thingo).filter('selector1').find('div').hide();
    

答案 1 :(得分:0)

这里有一些有用的东西。我不确定,如果这是你试图实现的东西..无论如何,这个例子就在这里:http://jsfiddle.net/dyNbw/

JS:

$(document).ready( function () {
    var hideInit = function () {
            $('.name1').hide();
    }
    var loadInit = function () {
            //get data
            var thingo = $('<div>Hi there</div>');
            //populate thingo with a bunch of divs matching selector1
            $('.name2').append(thingo);
    }
    loadInit();
    hideInit();
});

和html:

<div class="name1">This will be hidden</div>
<div class="name2"><span>I want to say:</span></div>