【问题标题】:Cannot add click events to dynamic generated list items by jquery [duplicate]无法通过jquery将点击事件添加到动态生成的列表项[重复]
【发布时间】:2017-08-14 14:28:03
【问题描述】:

jQuery 代码

这是我的 jquery 函数,用于从由 jquery 函数动态生成的数据库中检索列表或类别,我在每个生成的列表项上添加了单击事件。但它不会在点击时发出任何警报。

 <script type="text/javascript" src="<?= base_url('assets/js/jquery.js'); ?>"></script>
    <script type="text/javascript" src="<?= base_url('assets/js/jquery.min.js'); ?>"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script>
$(document).ready(function() {

            getlevel1category();


            $('#cat').click(function () {
                alert();
            });

            function getlevel1category () {
                $.ajax({
                    type:'POST',
                    url: "<?php echo base_url(); ?>" + "HomeController/getLevel1Categories",
                    async: true,
                    dataType: 'json',
                    success: function (data) {

                        var html='';
                        var i;
                        for(i=0;i<data.length;i++)
                        {

                            html +='<li id="cat">'+data[i].Name+'</li>';


                        }
                        $('#level1').html(html);
                    },
                    error: function () {
                        alert('Could not get data');
                    }
                });
            }
}
</script>

控制器

<?php

class HomeController extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('HomeModel');
    }

    public function getLevel1Categories()
    {
        $result = $this->HomeModel->getLevel1Categories();


        echo json_encode($result);
    }
}
?>

模型函数

public function getLevel1Categories()
    {
        $this->db->select()
            ->from('category_level1_tbl');
        $query = $this->db->get()->result();
        return $query;
    }

html

<div>
    <div>
        <h3>Level 1  Categories</h3>
    </div>
    <div  >
        <ul id="level1">

        </ul>
    </div>
</div>

【问题讨论】:

  • “我已经在每个生成的列表项上添加了点击事件” 不,你没有,反正上面的代码中没有。
  • 另外:ID 必须在文档中是唯一的,您不能在多个元素上使用相同的 ID(例如,cat)。
  • 尝试使用html +='&lt;li id="cat' + i '"&gt;'+data[i].Name+'&lt;/li&gt;'; 而不是html +='&lt;li id="cat"&gt;'+data[i].Name+'&lt;/li&gt;';$('#cat1').click(function () { alert(); });

标签: javascript php jquery ajax codeigniter


【解决方案1】:

如果元素有多个,首先不要使用id,因为id 必须是唯一的,而是使用class 并使用事件委托,例如,

$('#level1').on('click','.cat',function () {
   alert();
});

【讨论】:

  • 我们不需要另一个回答这个问题。尤其是问题结束后不到整整两分钟。
  • 感谢他为我工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 2013-01-03
  • 2014-08-20
  • 2020-02-17
  • 1970-01-01
相关资源
最近更新 更多