JQuery里面的一个对象LIteral

时间:2016-07-22 14:13:05

标签: javascript jquery object

我在JS中有这段代码片段:

var Mylib = Mylib || function(){

    var $cart         = $('#topbar_cart_value');
    var _cartObj = {
        total: 0,
        items: 0
    };    
    /**
     * 
     * @type String|el
     */
    function render() {
        //Render the total in cart
        var str = "€" + str.replace(".",",");
        $cart.html(str); <--
        // THIS IS GETTING SELECTED OK!
        console.log(document.getElementById('topbar_cart_value'));
       // THIS IS GETTING SELECTED OK!
        console.log($('#topbar_cart_value'));
       // BUT THIS IS GETTING SELECTED WITH LENGHT 0! ....
        console.log($cart);
       // ...AND THEN...
        $cart.html(str); //<--DOES NOT SET THE value
    }
return {
        init : function() {
              cacheDom();
            },
            getCartObj : getCartObj,
            setCartObj : setCartObj,  
            addToCartObj: addToCartObj,
    };
}();
Mylib.init(); 
/** ..........AFTER MANY BLOCKS OF HTML AND JS ...............**/

 $(document).ready(function() { unimanlib.init( 
            {'cart_sel':'span#topbar_cart_value'
            }); });

问题在render函数中解释。上一个日志的控制台是:

[prevObject: m.fn.init[1], context: document, selector: "#topbar_cart_value"]
context: document
length: 0
prevObject:m.fn.init[1]
selector:"#topbar_cart_value"
__proto__: Object[0]

2 个答案:

答案 0 :(得分:1)

这段代码

var $cart = $('#topbar_cart_value');
一旦你创建了一个Mylib对象,就会调用

,我认为你是在渲染实际的html之前创建它的。

您应该在Mylib.init();功能

中使用$(document).ready

答案 1 :(得分:0)

检查元素id #topbar_cart_value是否对该元素是唯一的。 同时检查标签是否是#topbar_cart_value的直接子项,因为如果其中任何一个是假的,它将无效。