我想使用jquery模板,但它无法正常工作。 这是我的标记Html。它很简单,但我很困惑为什么它不能正常工作
<head runat="server">
<script src="Resource/Scripts/jquery.min.js" type="text/javascript"></script>
<script src="Resource/Scripts/jquery-tmpl.js"></script>
<script id="myTmpl" type="text/x-jquery-tmpl" >
<tr>
<td><label>${urlPic}</label></td>
<td><label>${name}</label></td>
<td><label>>${count}</label</td>
<td><label>${price}</label></td>
<td><label >${sum}</label></td>
</tr>
</script>
<script type="text/javascript">
jQuery(document).ready(function () {
var data = [{ urlPic: "abc.jpg", name: "Tom", count: "3", price: "3000000
0", sum: "40000000" } ];
// below line raise errro
$("#myTmpl").tmpl(data).appendTo("#baskettbl2");
});
</script>
</head>
这是我的HTML
<body>
<form id="form1" runat="server">
<table id="baskettbl2"><table>
</form>
</body>
我收到此错误:
TypeError: $(...).tmpl is not a function
编辑: 我发现它不能仅在第一次请求时起作用。此模板位于我的母版页中。加载默认值时。它不起作用。但是当点击到另一个页面时,它可以工作!有什么问题?我真的很困惑
答案 0 :(得分:2)
我建议你做2次检查:
答案 1 :(得分:1)
我将这些自定义函数(属于使用cookie)包含在我的jquery.js文件中,它覆盖了我的$ char。我评论这些行并解决了错误
(function (factory) {
if (typeof define === 'function' && define.amd) {
// amd. register as anonymous module.
define(['jquery'], factory);
} else {
// browser globals.
factory(jquery);
}
}
(function ($) {
var pluses = /\+/g;
function raw(s) {
return s;
}
function decoded(s) {
return decodeuricomponent(s.replace(pluses, ' '));
}
function converted(s) {
if (s.indexof('"') === 0) {
// this is a quoted cookie as according to rfc2068, unescape
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
return config.json ? json.parse(s) : s;
} catch (er) { }
}
var config = $.cookie = function (key, value, options) {
// write
if (value !== undefined) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new date();
t.setdate(t.getdate() + days);
}
value = config.json ? json.stringify(value) : string(value);
return (document.cookie = [
config.raw ? key : encodeuricomponent(key),
'=',
config.raw ? value : encodeuricomponent(value),
options.expires ? '; expires=' + options.expires.toutcstring() : '', // use expires attribute, max-age is not supported by ie
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// read
var decode = config.raw ? raw : decoded;
var cookies = document.cookie.split('; ');
var result = key ? undefined : {};
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split('=');
var name = decode(parts.shift());
var cookie = decode(parts.join('='));
if (key && key === name) {
result = converted(cookie);
break;
}
if (!key) {
result[name] = converted(cookie);
}
}
return result;
};
config.defaults = {};
$.removecookie = function (key, options) {
if ($.cookie(key) !== undefined) {
// must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return true;
}
return false;
};
}));
答案 2 :(得分:1)
我遇到了同样的问题,只需检查'jquery.tmpl.min.js'引用必须添加here the link file。
答案 3 :(得分:0)
检查$是否被覆盖,在解决方案中搜索noConflict并检查哪个字符覆盖$并使用它。在我的情况下的例子而不是使用$如果我使用_ $ .tmpl()那么它可以工作。