$("a[rel=example_group4]").fancybox({
'transitionIn': 'none',
'transitionOut': 'none',
'titlePosition': 'over',
'titleFormat': function(title, currentArray, currentIndex, currentOpts) {
return '<span id="fancybox-title-over"> '
+ result
+ (currentIndex + 1)
+ ' / '
+ currentArray.length
+ (title.length ? ' ' + title : '')
+ '</span>'
}
})
当我们在使用JS进行赋值时,进行简单类型的赋值,只会改变变量的值,而不会改变变量的地址,例如:
此时改变b的值,a的值是不会收到影响的。
而当我们进行复杂类型赋值时,例如:
此时我们b中的name值改变了,与此同时a中的name值也将变成b,大多数情况下我们都不希望这种情况发生,那么该怎么处理?
(ps:简单数据类型一般包括number,string,boolean,其他数据类型一般都为复杂数据类型)
处理这个问题涉及到JS中的深拷贝,JS的深拷贝会为新的变量重新申请一个新的地址块,不会指向原变量的地址,如何实现深拷贝,以下提供了两种方法。
将a进行序列化之后赋值给b,这种方法虽然简单,但是有一定的缺陷,如果a对象中有函数,数组等复杂数据类型,在序列化之后将会丢失这些复杂数据类型,导致赋值不完全。
有一个办法很方便a.js文件改成其他服务器端脚本,但输出是js语法格式
比如把a.js改成a.php文件
代码示例如下:
<?php $id = $_GET['id'] echo ' function tan(){ alert("' . $id . '") } '这个文件会获取提供的id的值,然后生成一个js函数方法
调用的时候:
<script type="text/javascript" src="a.php?id=20"></script><button onclick="tan()">Click</button>
上面是js引入这个php文件,并提供一个参数id,值是20
然后加了一个按钮触发点击事件调用a.php生成的js函数方法,结果是会弹出20的提示警告框
效果如下图:
满意请采纳。