首页 新闻 会员 周边

仿百度搜索做智能提示遇到的问题

0
悬赏园豆:15 [待解决问题]

jq代码:

$(function () {
    $("li").click(function () {
        alert("a");
    });
});


$(function () {
    $("#con").hide();
    $("#txt").keyup(function () {
        var title = $("#txt").val();
        if (title != "") {

            var para1 = "{Title:'" + title + "'}"; //如果传多个参数,形式如:= "{AskId:'" + askid + "',Text:'" + text + "'}";
            $.ajax({
                type: "POST",
                contentType: "application/json;utf-8",
                url: "WebService1.asmx/GetTitles",
                data: para1,
                dataType: "json",
                success: function (result1) {
                    result1 = result1.d; //返回d后面的json内容
                    $("#con").html(result1.Infor);
                    $("#con").show();
                }
            });
        }
    });
});

效果:

 

为什么$(function () {
    $("li").click(function () {
        alert("a");
    });
});不执行???

蜡笔小新111的主页 蜡笔小新111 | 初学一级 | 园豆:6
提问于:2014-05-15 16:29
< >
分享
所有回答(6)
0

可能还没加载出来li元素,代码就已经执行完了

$(function () {
    $("li").click(function () {
        alert("a");
    });
});

sam.c | 园豆:148 (初学一级) | 2014-05-15 16:47
0

click绑定不支持动态添加元素,试下$(document).on('click','li',function(){ alert('a'); })

iamppz | 园豆:412 (菜鸟二级) | 2014-05-15 23:38
0

你的页面加载好了就开始绑定li的click事件,然后这是你的li还没有通过ajax执行得到,所以你后来加进来的li是没有绑定click事件的

刘宏玺 | 园豆:14020 (专家六级) | 2014-05-16 09:28
0

你的li是动态生成的元素,一开始注册的事件是没有注册到新创建的li对象上的。
你可以采用$(document).on('click','li',function(){});这种事件冒泡的方式来实现,或者采用delegate。

幻天芒 | 园豆:37175 (高人七级) | 2014-05-16 10:02
0

都说完了 上面的  我说个另外的方法   $("li").click(function () {
        alert("a");
    }); 可以写在回调函数返回成功里面 但是这个时候又有一个问题了 如果你点击多长会绑定多次click

这个时候用die() 或者在绑定后   unbind;

s_p | 园豆:138 (初学一级) | 2014-05-16 10:45
0

要用$.on('click',...)

因为$("li").click(function () {
        alert("a");
    });
});做函数绑定的时候,还没有创建con中的li项目

samu | 园豆:211 (菜鸟二级) | 2014-05-16 11:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册