jQuery document.on()子选择器

时间:2015-10-01 13:44:30

标签: javascript jquery html

我有一个ul,我想在点击一个孩子时创建一个提醒。

<ul id="myul">
    <div class="test">
        <div class="test1">
            <li></li>
            <li></li>
        </div>
    </div>
</ul>

这样的事情是可能的:

$(document).on('click', '#myul.find(li)', function()
{
   alert('hey!');
}

我无法使用#myul > li,因为我在li之前还有其他孩子。

3 个答案:

答案 0 :(得分:1)

ul个元素最多只能包含li个元素,这些元素最终与olul元素混合在一起。你可以修改你的html和jquery,如:

$(document).on('click', '#myul ul li', function() {
  alert('hey!');
});
ul,
li {
  list-style-type: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="myul">
  <li class="test">
    <ul class="test1">
      <li>rasd</li>
      <li>sadsad</li>
    </ul>
  </li>
</ul>

答案 1 :(得分:1)

您可以使用

$(document).on('click','#myul li', eventHandler) 

这意味着您要在文档上注册事件处理程序,但只有当事件来自eventHandler时才会调用#myul li,即li myul个孩子li ,不仅仅是直接的孩子,也可以是适合你的情况的后代。

但我建议您甚至将事件注册的范围缩小到最近的$('#myul').on('click','li', eventHandler) 祖先,如下所示。

String str = "He is a very very good boy, isn't he?";
String[] Val = str .split("[\\W]");

答案 2 :(得分:0)

您可以使用简单的css子选择器,如下所述。它将直接适用于儿童,而不仅仅是任何后代。

注意:根据http://w3.org标准,你无法使直接的孩子成为ul。 div标签应该在li里面。

data OrdTree a = OrdTree a [OrdTree a]
                    deriving (Show)