jquery - 添加的类不响应click功能

时间:2014-02-22 14:11:51

标签: javascript jquery

最佳,

有人可以帮助我找出,一个添加了类的元素如何像一个从头开始的类的元素一样运行? - > ($(document).ready(...))。我认为该类没有添加到click事件中,但不知道如何解决...

<script type="text/javascript">
  $(document).ready(function() {
     ...
      $('span.del').click(function() {
        var id = $(this).parent().attr('id')
        $("#"+id).remove()
        var input_values  = new Array();
        input_values [0]= id;
        load_page("change","taskMenu2.php",input_values,'del')
            })
     ...
  })
</script>

-

<ul>
    <li id="1" ><span class="del"></span> old </li>
    <li id="2" ><span class="del"></span> old </li>
    <li id="3" ><span class="del"></span> old </li>
    <li id="4" > NEED A DEL SPAN </li>
</ul>

现在: 我想将带有“del”类的范围添加到ID 4 li 。 当我点击它(跨度)时,它应该执行上面的功能,就像其他功能一样。

<script type="text/javascript">
   ...
   $("#4").prepend('<span class="del"></span>'); 
   ...
</script>

(使用jquery 2.1.0分钟)

希望找到解决方案

亲切的问候

3 个答案:

答案 0 :(得分:2)

您可以在容器元素上尝试.on()函数。

例如,在这种情况下,类似这样的事情:

$("ul").on("click", ".del", function() { // Your code });

答案 1 :(得分:2)

您需要在此使用event delegation,因为您的span已动态创建:

$(document).ready(function() {
    $('#4').on('click', 'span.del', function() {
        var id = $(this).parent().attr('id')
        $("#"+id).remove()
        var input_values  = new Array();
        input_values [0]= id;
        load_page("change","taskMenu2.php",input_values,'del')
    });
})

另外,这里列出了id列表项的旁注。来自HTML 4 specification

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

HTML 5 specification更宽容,只说:

  

该值必须在元素主页中的所有ID中唯一   子树,必须包含至少一个字符。价值不能   包含任何空格字符。

因此,对于有效的HTML标记,您可以将<li id="1" ><li id="2" > ....更改为其他内容,例如<li id="li1" ><li id="li2" >...

答案 2 :(得分:1)

.click()事件不会将事件绑定到动态html元素。您应该将.on()用于动态html元素的绑定事件:

$('ul').on('click', 'span.del', function() {
    // YOUR CODE HERE
});