Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态创建列表Javascript的索引_Javascript_List_Dynamic_Indexing - Fatal编程技术网

动态创建列表Javascript的索引

动态创建列表Javascript的索引,javascript,list,dynamic,indexing,Javascript,List,Dynamic,Indexing,我有一个动态创建的列表,其中包含json的数据。 因此,我的问题是如何获取单击项的索引 我试过这个: $("li").click(function() { var index = $("li").index(this); alert(index); }); 但这不起作用。我没有收到警报? 如果我创建一些静态Li元素,我会得到它们的索引 请帮帮我://p>是的 $("li").click(function() { var index = $(this).

我有一个动态创建的列表,其中包含json的数据。 因此,我的问题是如何获取单击项的索引

我试过这个:

$("li").click(function() {
       var index = $("li").index(this);
       alert(index); });
但这不起作用。我没有收到警报? 如果我创建一些静态Li元素,我会得到它们的索引

请帮帮我://p>是的

$("li").click(function() {
       var index = $(this).index();
       alert(index);
});
两个问题:

  • 您只需要
    $(this).index()

    发件人:

    如果未向
    .index()
    方法传递任何参数,则返回值是一个整数,指示jQuery对象中第一个元素相对于其同级元素的位置

  • 当您执行
    $(“li”)。单击(…)
    时,它会将其连接到该时间点上存在的元素。稍后添加的对象将无法获得分配给它们的单击处理程序。处理此类动态列表的最佳方法通常是事件委派。DevlshOne给了你一个例子。其基本思想是:

    $("selector for the list, not the list items").on("click", "li", function() {
        // handler code here
    });
    
    钩住列表上的
    单击
    ,而不是列表项,但在单击发生时触发处理程序,就像钩住了对处理程序的单击一样


  • 动态创建的列表将需要委派事件

    $("ul").on("click", "li", function() {
           var index = $(this).index();
           alert(index);
    });
    

    如果还动态创建了
    ,请选择在创建列表之前存在的父节点。

    尝试以下操作。假设未动态加载
    ul

    $("ul.containerclass").on("click", "li", function() 
    {
       var index = $(this).index();
       alert(index);
    });
    


    注意:这里container类可以是ID

    他的问题与LI项的动态创建直接相关,而不是索引的值。他的帖子包含了这条语句,但这不起作用。我没有收到警报?如果我创建一些静态的Li元素,我会得到它们的索引。他的问题与Li项的动态创建直接相关,而不是索引的值。谁能猜到呢?我不建议将live events作为任何问题的默认解决方案,并且有多种方法可以将处理程序添加到动态创建的列表中。我没有收到警报?如果我创建一些静态Li元素,我会得到它们的索引。不用猜测。效果很好:)你帮了我很多。Thanks@user2561004如果您对此答案感到满意,请适当标记。谢谢
    $("ul.containerclass").on("click", "li", function() 
    {
       var index = $(this).index();
       alert(index);
    });
    
    $(document).on("click", ".containerclass li", function() {
       var index = $(this).index();
       alert(index);
    });