解决ecshop和jquery冲突 自定义美化商品属性选择

方法如下:

拷贝一个transport.js  为 transport1.js

在需要用到的页面插入这个新js

隐藏 586行处开始:
/*
 Object.prototype.toJSONString = function () {
 var a = ['{'], // The array holding the text fragments.
 b, // A boolean indicating that a comma is required.
 k, // The current key.
 v; // The current value.
 
function p(s) {
 
// p accumulates text fragment pairs in an array. It inserts a comma before all
 // except the first fragment pair.
 
if (b) {
 a.push(',');
 }
 a.push(k.toJSONString(), ':', s);
 b = true;
 }
 
// Iterate through all of the keys in the object, ignoring the proto chain.
 
for (k in this) {
 if (this.hasOwnProperty(k)) {
 v = this[k];
 switch (typeof v) {
 
// Values without a JSON representation are ignored.
 
case 'undefined':
 case 'function':
 case 'unknown':
 break;
 
// Serialize a JavaScript object value. Ignore objects that lack the
 // toJSONString method. Due to a specification error in ECMAScript,
 // typeof null is 'object', so watch out for that case.
 
case 'object':
 if (this !== window)
 {
 if (v) {
 if (typeof v.toJSONString === 'function') {
 p(v.toJSONString());
 }
 } else {
 p("null");
 }
 }
 break;
 default:
 p(v.toJSONString());
 }
 }
 }
 
// Join all of the fragments together and return.
 
a.push('}');
 return a.join('');
 };
*/

修改 common.js getSelectedAttributes方法。(如果需要的话)这里是解决商品商品属性点击的时候切换价格的
/**
 * 获得选定的商品属性
 */
function getSelectedAttributes(formBuy)
{
 var spec_arr = new Array();
 var j = 0;
 
for (i = 0; i < formBuy.elements.length; i ++ )
 {
 var prefix = formBuy.elements[i].name.substr(0, 5);
 
if (prefix == 'spec_' && (
 ((formBuy.elements[i].type == 'hidden' || formBuy.elements[i].type == 'checkbox') && formBuy.elements[i].checked) ||
 formBuy.elements[i].tagName == 'SELECT'))
 {
 spec_arr[j] = formBuy.elements[i].value;
 j++ ;
 }
 }
 
return spec_arr;
}

common.js 加入:
</pre>
function obj2str(o){
 var r = [];
 if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
 if(typeof o =="undefined") return "undefined";
 if(typeof o == "object"){
 if(o===null) return "null";
 else if(!o.sort){
 for(var i in o)
 r.push("\""+i+"\""+":"+obj2str(o[i]))
 r="{"+r.join()+"}"
 }else{
 for(var i =0;i<o.length;i++)
 r.push(obj2str(o[i]))
 r="["+r.join()+"]"
 }
 return r;
 }
 return o.toString();
}

加入购物车改为:
Ajax.call('flow.php?step=add_to_cart', 'goods=' + obj2str(goods), addToCartResponse, 'POST', 'JSON');

一招解决!!!解决ECSHOP中transport.js和jquery的冲突

在page_header.lbi文件的最后面添加下面的代码即可,经IETester测试后,ie6及以上都可行。
{insert_scripts files='niuzai/jquery-1.8.3.js'}
<script type="text/javascript">
$(function() {
window.__Object_toJS**tring = Object.prototype.toJS**tring;
delete Object.prototype.toJS**tring;
});
</script>
{insert_scripts files='test.js'}

注:**为大写O-N-S,去掉中间的两个-,被屏蔽了,无语。先声明一下,这不是我自创的,而是看了论坛里的兄弟的相关帖子后,然后我试了没用,因为导入文件顺序的问题,导致不能解决,所以就发了这个帖子,和大家分享分享。test.js为自己用jquery写的一些代码,要放在jquery文件的后面,注意不能和jquery文件一同导入,注意顺序,否则会出错。顺序为:先导入transport.js文件{insert_scripts files='transport.js,utils.js'},然后导入jquery文件 ,{insert_scripts files='niuzai/jquery-1.8.3.js'} 再加上这段代码<script type="text/javascript">
$(function() {
window.__Object_toJS**tring = Object.prototype.toJS**tring;
delete Object.prototype.toJS**tring;
});
</script>
最后引入自己用jquery书写的js文件。{insert_scripts files='test.js'}

时间: 2024-12-24 06:24:43

解决ecshop和jquery冲突 自定义美化商品属性选择的相关文章

ecshop jquery冲突,美化商品属性选择 IE中js无法获得默认属性

ecshop 和 jquery 冲突,美化商品属性选择 拷贝一个transport.js  为 transport1.js 在需要用到的页面插入这个新js 隐藏 586行处开始:/* Object.prototype.toJSONString = function () { var a = ['{'], // The array holding the text fragments. b, // A boolean indicating that a comma is required. k,

是ecshop与JQUERY冲突还是我我JS哪写错了求大神们帮下忙

问题描述 是ecshop与JQUERY冲突还是我我JS哪写错了求大神们帮下忙 如图,这个商品详情页面的其他功能都是好的,而且勾选套餐如果不选基本件也会跳出对话框.插件是我下载的,可是组合购买那个按键点不起来,鼠标放上面会显示 Javascript:addMultiTocart("m_goods_1","17"),但是点不进去也不报错,求大神帮忙分析分析问题出在我JS写错还是是因为Jquery冲突问题, 解决方案 求大神横空出世,这个问题小弟被困扰两天了

jQuery创建自定义的选择器用以选择高度大于100的超链接实例

 这篇文章主要介绍了jQuery创建自定义的选择器用以选择高度大于100的超链接,实例分析了jQuery自定义选择器的使用技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了jQuery创建自定义的选择器用以选择高度大于100的超链接实现方法.分享给大家供大家参考.具体分析如下: jQuery创建一个自定义的选择器,自己定义的这个选择器实际上可以是一个函数,下面的JS代码定义了一个over100pixels的选择器,选择出高度大于100的链接,这类技巧非常实用 ? 1 2 3 4

用jquery获取自定义的标签属性的值简单实例_jquery

如下所示: <tr class="gradeX" role="row" id="1001"> <td>王羲之</td> <td>2016-01-06</td> <td name="phone" style="display:none;">13680130700</td> <td name="pwd"

Material Design系列之Behavior实现支付密码弹窗和商品属性选择效果_Android

今天的效果在支付宝.淘宝.京东等电商App中很常见.比如支付宝输入密码弹窗.商城下单时选择商品属性时,从下面浮动上来一个PopupWindow,那么今天就带大家用Behavior来实现这两个效果,结果你会发现简直只需要一行代码. 总结下现在用的APP: 1. 仿支付宝弹出的输入支付密码窗口. 2. 仿淘宝/天猫弹出商品属性选择框. 3. 知乎首页上下滑动隐藏ToolBar和NavigationBar. 4. - 系列博客: 1. Material Design系列,Behavior之Bottom

jQuery CSS3自定义美化Checkbox实现代码_jquery

效果图: 是不是比默认的好看多了,个人的审美观应该还是可以的. 接下来我们一起来看看实现这款美化版Checkbox的源代码,主要思路是利用隐藏原来的checkbox和radiobox,用一个div来模拟checkbox/radiobox,并使用jQuery来完成选择切换时的动画效果. 先来看看HTML代码: <div class="wrapper"> <ul> <li> <p>Gender:</p> </li> &

jquery选择器-根据多个属性选择示例代码_jquery

根据多个属性选择E[attr=val][attr=val] $("div[title='ttt'][class='aaaa']").click()................ 所有div元素下所有属性title值是等于ttt并且属性class等于aaaa的元素

UpdatePanel和Jquery冲突的解决方法_jquery

在第一次页面加载时,元素A的X效果正常,点击B之后,页面局部刷新,此时,回到A,元素A失去X效果. 开始以为是前端我这到程序员那里出现问题,但仔细检查之后发现没有,后来了解了下页面应用了ASP.NET AJAX局部刷新,这就明朗了,估计是和JQUERY冲突了. 问题重现: 1.ASP.NET AJAX在页面中添加ScriptManager和UpdatePanel 2.在UpdatePanel中添加元素A 3.用jQuery对元素A添加X效果 4.在UpdatePanel中加一个Button B用

使用SUI与JQuery冲突的解决方法

    解决方式:替换jquery的$定义或者替换zepto.js的$定义     解决方法: jquery有一个方法叫noConflict() ,可以把jquery的$改掉. var jq=$.noConflict(); 这个时候用jq来代替jquery的$吧. zepto的符号改掉 window.$$=window.Zepto = Zepto 在zepto里加入这一行代码,就可以用$$来代替zepto里的$了.当然也可以选择其他符号来代替.     例如:          <script