jquery异步调用自数据库获取值通过knockoutjs赋值给职位二级菜单导致的jquery的hover事件不执行的例子

页面中的相应代码:


<div class="goods">
                    <div class="head">
                        <h3>
                            <i class="fa fa-bars pull-left margin-left-20"></i>
                            <i class="fa fa-chevron-down pull-right margin-right-20"><span></span></i>全部职位分类
                        </h3>
                    </div>
                    <div class="all-goods">
                        <!-- ko foreach: $data.JobClass -->
                        <div class="item " data-bind="css:{'btnone':$index==0}">
                            <div class=" product">
                                <i class="fa fa-chevron-right pull-right margin-top-10 margin-right-20 font-xs" style="color:#c1c1c1"></i>
                                <h3> <a href="#" data-bind="text:$data.JobClassName">...</a> </h3>
                            </div>
                            <div class="product-wrap posone">
                                <!-- ko foreach: SubClass -->
                                <div class="cf">
                                    <div class="fl   pr20">
                                        <h2><a href="#" target="_blank" data-bind="text:$data.JobClassName">...</a></h2>
                                        <dl class="cf">
                                            <!-- ko foreach: Jobs -->
                                            <dd> <a href="" target="_blank" data-bind="text:$data.JobClassName,attr:{'href':'/so/1/'+JobClassCode()}" style="font-weight:normal;">...</a> </dd>
                                            <!-- /ko -->
                                        </dl>
                                    </div>
                                </div>
                                <!-- /ko -->
                            </div>
                        </div>
                        <!-- /ko -->
                    </div>
                </div>

jquery调用:

$.post("/service/getjobclass", {}, function (data) {
       jobClassX = data;
       console.info(jobClassX);
       page.VM.JobClass=ko.mapping.fromJS(jobClassX, {}, page.VM.JobClass);
   });
导致的显示效果本来是这样:


鼠标放在左边链接上能显示右边的菜单,但是,现在却显示不出了。

查了下控制hover显示的代码:

//商品分类   

​$('.all-goods .item').hover(function () {

       console.info($(this).addClass('active').find('s'));        $(this).addClass('active').find('s').hide();        $(this).find('.product-wrap').show();    }, function () {        console.info($(this).removeClass('active').find('s'));        $(this).removeClass('active').find('s').show();        $(this).find('.product-wrap').hide();    });

增加console.info输出,在浏览器控制台没有任何提示,说明hover事件根本没有执行。刚开始以为是异步调用二级和三级职位分类没加载上,审查元素,

看到自数据库中获取的数据在页面中均正确加载了。经过各种尝试均没有解决。后来怀疑是异步调用的问题。改为同步调用。代码如下:

$.ajax({
        url: "/service/getjobclass",
        type:"POST",
        data:{}, 
        async:false,
        success: function (data) {
            jobClassX = data;
            console.info(jobClassX);
            page.VM.JobClass = ko.mapping.fromJS(jobClassX, {}, page.VM.JobClass);
        }
    });

这才可以正确显示.推测是hover事件绑定函数的时候,异步调用还没有加载完全造成


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值