如何使用jQuery选择器访问实际的DIV?

时间:2012-10-20 07:29:10

标签: javascript jquery html

我有一个动态填充其他div的div ...

<div id="wrapper">

</div>

//javascript 
 for(//a bunch of times){
  var d = document.cloneNode('divModel');
  d.foo = {//bunch of stuff };
  document.getChildById('wrapper').appendChild(d) is applied later to fill in child divs
}

现在我想循环遍历包装器的子项并使用那个foo做一些事情。

当我通过普通的javascript

进行此操作时
document.getElementById('wrapper').childNodes[x].foo

这就像我期望的那样工作

然而

$('#wrapper').each(function (i, element){
      console.log(element.foo); //foo here is undefined
})

导致一堆未定义的

所以......我猜测jQuery实际上正在处理我的div的内部包装器,而不是直接处理div。我很好奇(或者如果可能的话)我可以访问这个循环中的实际div,以便访问我的自定义foo。

修改 根据你到目前为止的所有答案(并且非常感谢时间)我觉得我需要澄清,因为每个人似乎都错过了我的实际问题...... 我已将上面的代码修改为更明确。

我没有语法错误(在我的实际代码中)。 jQuery正确地循环包装子项,它只是不返回ACTUAL子项(div)它返回它自己的版本,并且这个自定义版本不包含我附加的foo。

所以,我需要的是能够回到实际的dom对象,而不是它周围的jQuery包装器。这可能吗?

4 个答案:

答案 0 :(得分:2)

你忘记了孩子们(和提到的'#'):

$('#wrapper').children().each(function (i, element)...

答案 1 :(得分:1)

除了选择器关闭之外,你是完全正确的。您需要$("#wrapper")

$("#wrapper").each(function(i,e) { console.log(e.id) });

修改

确认可以从DOM元素中获取对象...

var c = document.getElementById('container');
var el = document.createElement('div');
el.id = 'new';
el.innerText='the test element';
el.test = { hello: "world" };
c.appendChild(el);
console.log('javascript: ' + document.getElementById('new').test.hello);
$("#container div").each(function(i,e) {
    if (e.test) console.log('jquery: ' + e.test.hello);
});

http://jsfiddle.net/eeYHr/3/

答案 2 :(得分:0)

为您提供的一些选择:

$('#wrapper').children().each(function (i, element) { ... });

$('#wrapper > *').each(function (i, element) { ... });

答案 3 :(得分:0)

或者更明确一点,正如你所说,你只专注于儿童DIV:

$('#wrapper div').each( function() {
    // do some funky stuff
    alert($(this).attr('id')); // displays element ID
});

有关进一步学习的信息,请参阅此JQuery帮助页面:

http://api.jquery.com/category/selectors/basic-css-selectors/