这篇文章会用到两个JQuery的插件。都是相当不错的。我会通过这两个插件来实现两个例子,一个是幻灯片的放映功能,一个是drag-drop样式的购物车。
1. 实现幻灯片效果:
这里会用到JQuery.js这个基本库,另外还用了jquery-ui-personalized-1.6rc4.min.js和JQuerytimer.js这两个插件,前者是ui方面的功能库,后者用来实现计时功能。
下载personalized脚本的地址:
下载JQuerytimer插件的地址: http://jquery.offput.ca/every/
然后是用到的html代码:
<mce:script language="javascript" type="text/javascript" src="jquery-1.2.6.min.js" mce_src="jquery-1.2.6.min.js"></mce:script>
<mce:script language="javascript" type="text/javascript" src="jquery.timers.js" mce_src="jquery.timers.js"></mce:script>
<mce:script language="javascript" type="text/javascript" src="jquery-ui-personalized-1.6rc4.min.js" mce_src="jquery-ui-personalized-1.6rc4.min.js"></mce:script>
<mce:style type="text/css"><!--
.default
{
background-color:black;
width:100%;
height:600px;
text-align:center;
color:white;
font-family:Courier New;
font-size:30px;
font-weight:bold;
}
.innerDiv
{
position:relative;
padding:100px;
}
--></mce:style><style type="text/css" mce_bogus="1"> .default
{
background-color:black;
width:100%;
height:600px;
text-align:center;
color:white;
font-family:Courier New;
font-size:30px;
font-weight:bold;
}
.innerDiv
{
position:relative;
padding:100px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="div1" class="default">
<div class="innerDiv">
成为一个JQuery的高手
<br />
by Nic
</div>
</div>
</div>
</form>
</body>
</html>
使用到的Javascript:
$(document).ready(function() {
$(this).everyTime(2000, function() {
$(".innerDiv").toggle("slide", 2000);
$(".innerDiv").html(array[index - 1]);
index++;
if (index > 9) {
$(this).stopTime("hide");
$("#div1").animate(
{
width: "0px",
height: "0px"
}
, 5000, function() {
$("#div1").animate(
{
width: "90%",
height: "90%"
}, function() {
$("#div1").html("开始学习 JQuery!!");
});
});
}
});
});
// --></mce:script>
我是通过把需要播放的内容存放到一个array中,然后再使用everytime功能来每两秒钟播放调用一个slide功能,每次slide的内容是array中的一个元素,通过下标的改变来改变现实的内容。
截图:
2.可拖拽的购物车实现:
这里先说明下需要的软件支持,vs2008(sp1), MSChart的安装。有了它们就可以开始了。
首先我们假设需要网上购买的产品包含四个属性,Code,Name,Description和Price。
这里我们不适用数据库了,所以先给产品在代码里定义几个就行了。
return products;
}
在前台的html页面中有个DataList控件用来实现产品,datalist的代码和后台数据的绑定代码如下:
<ItemTemplate>
<div class="productItemStyle" price='<%# Eval("Price") %>'
code='<%# Eval("Code") %>' id='item_<%# Container.ItemIndex + 1 %>'>
<li>
<%# Eval("Code") %>
</li>
<li>
<%# Eval("Name") %>
</li>
<li>
<%# Eval("Description") %>
</li>
<li>
$<%# Eval("Price") %>
</li>
</div>
</ItemTemplate>
</asp:DataList>
dlProducts.DataSource = products;
dlProducts.DataBind();
}
我们DataList的每个元素都是个Div,每个产品都为之创建一个div,Div的元素使用了product的'price','code'和'id'属性。绑定数据后你运行一下界面如下:
接下来我们要做的是让div可以拖动。
第一步是在你的aspx文件中引用JQuery和它的插件:
第二步使用JQuery的draggable方法来实现每个div的可拖动:
$(".productItemStyle").draggable({ helper: "clone", opacity: "0.5" });
)};
第三步是让拖动的div能够放到某个区域,用到JQuery的Droppable方法,它有三个参数,accept:能够接受的控件类型,hoverClass,当放下时是否产生hover效果,drop:function(ev,ui){}这个方法你可以用来写任何拖放后的其它要实现的效果。全部的代码如下:
var droppedItem = ui.draggable.clone().addClass("droppedItemStyle");
var productCode = droppedItem[0].attributes["code"].nodeValue;
var productPrice =
getFormattedPrice(droppedItem[0].attributes["price"].nodeValue);
var removeLink = document.createElement("a");
removeLink.innerHTML = "Remove";
removeLink.className = "deleteLink";
removeLink.href = "#";
removeLink.onclick = function()
{
$(".dropZone").children().remove("#" + droppedItem[0].id);
updateTotal(productPrice * (-1));
}
droppedItem[0].appendChild(removeLink);
$(this).append(droppedItem);
updateTotal(productPrice);
}
}
);
最后看看运行效果: