-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

残念ながら、要素は隠されていません-私はここで何を間違えましたか?

ありがとう!


解決

多くの人が示唆しているように、私のセレクターは正しくありませんでしたが、それは私が関数を呼び出していた順序でした。hideInit実行が完了したことを保証するためにloadInit、の最後、内部でそれを呼び出します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要素でのjQUeryhide()の使用

4

2 に答える 2

1

appendこれは、、filterおよびhidejQueryメソッドを使用してDOMを操作する1行で実現できます。

  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 に答える