【问题标题】:jQuery: «.children» vs «.find» + «.live»jQuery: «.children» vs «.find» + «.live»
【发布时间】:2012-03-16 03:23:20
【问题描述】:

这里有一些代码:

HTML:

<div class="thematicHeaderBox group">
 <h3 class="thematicHeader group">SMTH</h3>
 <button class="activatedUsual" style="float: right; ">on</button>
</div>

JS,不工作:

attachEvents(
 $(".thematicHeaderBox").children(".activatedUsual"),
 self.elem.box.thematic.settings.event
);

JS,工作:

attachEvents(
 $(".thematicHeaderBox").find(".activatedUsual"),
 self.elem.box.thematic.settings.event
);

附加事件函数:

function attachEvents (elems, data) {

    for(var p in data){
        if(data.hasOwnProperty(p)){
            elems.live(
                data[p].name,
                data[p].callback
            );
        }
    }
}

data 是一组对象事件名称和要使用的回调。

问题是为什么只有第二种变体可以正常工作。

【问题讨论】:

  • 对不起,请问有什么问题?
  • 问题是为什么只有第二个变体可以正常工作。

标签: jquery find live children


【解决方案1】:

.children() 方法允许我们在 DOM 树中搜索这些元素的直接子代,并从匹配的元素中构造一个新的 jQuery 对象。

直属子级意味着一个层次结构。在您的情况下,.activatedUsual 不是 '.thematicHeaderBox' 的直接子级。

【讨论】:

  • 根据定义,子元素位于层次结构中另一个元素的正下方...
  • 没错。但他正在寻找一个使用.children() 的孩子的孩子。我只是解释一下定义。
  • 记录 $(".thematicHeaderBox").find(".onBtnType1, .offBtnType1"));和 $(".thematicHeaderBox").children(".onBtnType1, .offBtnType1")) 给了我相同的元素列表。
  • 它们都位于.thematicHeaderBox 子层次结构的第一级。对吗?
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2019-03-27
相关资源
最近更新 更多