我在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]
答案 0 :(得分:1)
这段代码
var $cart = $('#topbar_cart_value');
一旦你创建了一个Mylib对象,就会调用,我认为你是在渲染实际的html之前创建它的。
您应该在Mylib.init();
功能
$(document).ready
答案 1 :(得分:0)
检查元素id #topbar_cart_value
是否对该元素是唯一的。
同时检查标签是否是#topbar_cart_value
的直接子项,因为如果其中任何一个是假的,它将无效。