1

私のコード:

var parent = document.createElement('div');
var pen = document.createElement('div');
var dog = document.createElement('div');
dog.className = "dog";
pen.appendChild(dog);
parent.appendChild(pen);
dojo.query("> *", parent).forEach( function(node){
    if(node.className == "dog")alert('bark');
});
dojo.query("> .dog", parent).forEach( function(node){
    alert('bark');
});

アラートの「樹皮」が表示されません。私は何が間違っているのですか?

4

1 に答える 1

0

問題は、生成されたhtmlがセレクターと一致しないことです。

<div title="parent">
    <div title="pen">
        <div class="dog">
        </div>
    </div>
</div>

> *一致するだけで一致penしないから> .dogです。これらを次のように変更できます。

var parent = document.createElement('div');
var pen = document.createElement('div');
var dog = document.createElement('div');
dog.className = "dog";
pen.appendChild(dog);
parent.appendChild(pen);
dojo.query("> * > *", parent).forEach(function (node) {
    if (node.className == "dog") {
        alert('bark');
    }
});
dojo.query("> * > .dog", parent).forEach(function (node) {
    alert('bark');
});

これがフィドルです:http://jsfiddle.net/pTqmL/

編集

または、それが内部にある必要がある場合parent

dojo.query("*", parent).forEach(function (node) {
    if (node.className == "dog") {
        alert('bark');
    }
});
dojo.query(".dog", parent).forEach(function (node) {
    alert('bark');
});

あなたのコメントに基づいて、あなたが見落としている/気づいていないかもしれない核心的なことは、クエリが親の内部でスコープされているということだと思います。

于 2012-04-06T03:21:16.620 に答える