Javascript 单击li元素时,jQuery mobile弹出窗口

Javascript 单击li元素时,jQuery mobile弹出窗口,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我试图在点击UL列表中的LI元素时显示一个弹出窗口 这里是html部分 <ul id="list" data-role="listview" data-filter="true" data-inset="true"> </ul> <div id="popups"> </div> #列表中的元素将动态生成并填充 因为我想在点击列表中的元素时弹出一个窗口,当我在UL中插入元素时,我是这样做的 $("#popups").append('<

我试图在点击UL列表中的LI元素时显示一个弹出窗口

这里是html部分

<ul id="list" data-role="listview" data-filter="true" data-inset="true">
</ul>

<div id="popups">
</div>
#列表中的元素将动态生成并填充

因为我想在点击列表中的元素时弹出一个窗口,当我在UL中插入元素时,我是这样做的

 $("#popups").append('<div data-role="popup" id="' + event.data.key + '">' + '<p>' + event.data.text + '</p>' + '</div>');
 $("#list").append('<li><a href="#' + event.data.key + '" data-rel="popup" class="ui-btn ui-corner-all ui-btn-right" >' + event.data.text + '</a></li>');
$(“#弹出窗口”).append(“+”“+event.data.text+”

“+”); $(“#列表”)。追加(“
  • ”);
    但我得到的是,当我点击UL中的元素时,什么也没有发生:(

    我怎样才能解决这个问题

    谢谢,
    Ram

    您没有展示如何处理单击LI(在js中)的问题,但是动态生成内容的问题是,如果要添加事件侦听器,您需要使用delegate one。 因此:

    $('#list li').click(function() { /* your code here */ });
    
    您需要使用:

    $('#list').on('click', 'li', function() { /* your code here */ });
    

    您必须使用以下任何一种方法,因为li是动态创建的

    $('#list').on('click', 'li', function() { });
    

    谢谢大家

    “代表”帮助了我

    这里是修复

    $(document).ready(
        function() {
    
            $('#list').delegate('li', 'click', function() { 
            var listId = this.id;
            console.log("element id: " + listId);
            popupElement = '#'+listId+'L';
            console.log("popupElement id: " + popupElement);
            $( popupElement ).popup();
            });
    
        });
    
    $(document).ready(
        function() {
    
            $('#list').delegate('li', 'click', function() { 
            var listId = this.id;
            console.log("element id: " + listId);
            popupElement = '#'+listId+'L';
            console.log("popupElement id: " + popupElement);
            $( popupElement ).popup();
            });
    
        });