1

这是一个简单的问题,但我无法完成。我尝试了很多不同的方法,包括这些http://api.jquery.com/child-selector/

在这种情况下:

HTML

<div id="quiz_list_wrap"> 
    <div class="row">
        <div id=level>bla bla
        </div>
    </div>
</div>

jQuery

$(document).on("click","#quiz_list_wrap .row",function(event){
    var self = $(this); // I need self for something else
    var varname = $(self > .level);
        alert(varname.html());
});
4

1 回答 1

3

您的点击处理程序将永远不会被调用,因为选择器"#quiz_list_wrap .row"不匹配任何内容。该选择器查找具有 class的后代。但是您在示例 HTML 中拥有自己的类。#quiz_list_wraprow#quiz_list_wrap row (问题中的更新结构不再存在该问题。)

另外,您已经给出了divan id。所以文档中只能有其中之一。要选择div,只需执行以下操作:

var levelDiv = $("#level");

如果您只想在它是您的元素的后代时找到它#quiz_list_wrap,并且只想在点击时找到它,您可以使用find

$(document).on("click","#quiz_list_wrap",function(event){
// ------------------ note change -----^
    var levelDiv = $(this).find("#level");
});

现在,如果您的 HTML 实际上看起来像这样(我添加了一个子元素row并将id级别 div 更改为 aclass以便您可以拥有多个):

<div id="quiz_list_wrap"> 
    <div class="row">
        <div class=level>bla bla
        </div>
    </div>
</div>

...然后您的点击处理程序将被您的原始选择器调用,并且您将在处理程序中使用$(this).find("div.level")(或只是$(this).find(".level"))来找到它。

最后,既然你说选择器,我会提到find寻找任何后代(孩子,孙子等)。如果您真的只想看孩子,请$(this).children("selector here")改用。

于 2013-01-06T07:48:12.803 回答