-3

在以下代码中:

$(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();
});

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

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

谢谢!


解决方案

正如许多人所建议的那样,我的选择器并不正确​​,但这是我调用函数的顺序。为了保证hideInitrun afterloadInit已经完成,我把它叫做in the end, inside, of 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();
});

感谢您的评论/回答!


不相关:在新创建的 dom 元素上使用 jQUery hide()

4

2 回答 2

1

append这可以通过使用、filterhidejQuery 方法操作 DOM 的一行来实现。

  1. $('selector2').append(thingo)- 附加项目
  2. .filter('selector1')- 原始选择器的,只选择那些匹配过滤器的
  3. .hide()- 隐藏过滤的项目

像这样:

$(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();
于 2012-07-06T14:11:02.107 回答
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>
于 2012-07-06T14:11:33.147 回答