1

我有这个 div

<div class="foodsSection">
    <label>
        Foods:
    </label>
    <ul>
        <li>
            roma
        </li>
    </ul>
</div>

这个jQuery:

$(".foodsSection li").click(function(){
        $(".addressesSection").css("display","block");
    });

当我按下romajquery 时工作正常,但是当我按下li来自使用 jquery 的数据库的任何内容时,jquery 不工作,这是 jquery,它采用数据表单数据库,但它在li元素中

$(document).ready(function(){
    $(".RestauranstSection li").click(function (){
        var divYourOrder = $(".YourOrder");
        var li = $(".OMRestaurants li");
        $(".foodsSection").css("display", "block");
        var restaurantID = 8;
        var foodDive = $(".foodsSection ul");
        foodDive.html("");
        var lis = '';
        $.getJSON("http://localhost/TheEatTel/Food/getFoodForRestaurant/"+restaurantID+"/TRUE",function(data){
            for(var i=0;i<data.length;i=i+3){
                lis +="<li id='"+data[i+2]+"'>"+"<label>"+data[i]+"</label> <label>"+data[i+1]+"</label></li>";
            }
            lis+="";
            foodDive.html(lis);    
        });
    });
    $(".foodsSection li").click(function(){
        $(".addressesSection").css("display","block");
    });
});
4

4 回答 4

3

用这个 :

$(".foodsSection ul").on('click', 'li', function(){

您调用绑定函数的 jQuery 集是在您进行绑定时计算的。收到事件后,它会检查您作为参数传递的选择器。请参阅文档

于 2013-03-18T15:19:51.023 回答
2

您必须使用.on()而不是.click( )因为 click 方法不适用于已生成的 DOM。

$(".foodsSection li").on("click", 'li' ,function(){
    $(".addressesSection").css("display","block");
});
于 2013-03-18T15:22:53.743 回答
1

使用委托事件,例如

$(".foodsSection").on("click", "li", function(){
    $(".addressesSection").css("display","block");
});

请参阅http://api.jquery.com/on/ (并特别阅读有关直接和委托事件的部分,这解释了为什么您的代码不起作用而此代码起作用)

于 2013-03-18T15:23:48.643 回答
1

解决方案将是

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

您的代码中的问题是,您当时在每个现有的 'li' 元素上附加了侦听器。否则,当您使用时,.on('click', 'li', function(){})您将侦听器附加到父元素,因此它可以处理对其子元素的所有点击

于 2013-03-18T15:26:38.400 回答