javascript - 对象文字中的 JQuery

标签 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]

最佳答案

这段代码

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

就会被调用,我认为你是在渲染实际的 html 之前创建它的。

您应该在 $(document).ready 函数中使用 Mylib.init();

关于javascript - 对象文字中的 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38528647/

相关文章:

Javascript 在原型(prototype)中设置具有值类型的对象属性?

javascript - 如何在原型(prototype)函数中访问javascript对象数组

JavaScript 邮件函数 - 从字符串中删除日期戳部分

javascript - 对象数组的 lodash 总和

jquery - jquery中如何设置图像元素的背景颜色

javascript - 如何在复杂的 Web 应用程序中构建 Javascript 程序?

javascript - 迷你图条形图适合

javascript - 从菜单中下拉空选择

javascript - 当用户点击 CardView 时,如何实现圆形显示/波纹效果? [加速器]

javascript - 如何创建pugjs组件?