<div class="rtitle">我的收藏</div>
<div class="list_ul" data-bind="foreach:items">
<dl class="list_c">
<dt class="img"><a target="_blank" href="#" title=""><img data-bind="attr:{src:CoverUrl1}" alt="" /></a></dt>
<dd class="delete"><span data-bind="click:function(event){Delete(FavoriteId)}"><a href="javascript:void(0)" title="删除收藏" class="icon icon-tsina"></a></span></dd>
<dd class="txt">
<h3><a data-bind="attr:{href:StaticPagePath,Title:Title}" title=""><span data-bind="text:Title"></span></a></h3>
<p data-bind="text:Abstract"></p>
<div class="txt_boxb">
<div class="time"><i></i><em data-bind="text:DateAndTimeStr"></em></div>
<div class="browse"><i></i><em data-bind="text:ReadNum"></em></div>
<div class="share" data-bind="event: { mouseover: function(event){ShareInline(event)}, mouseout: function(event){ShareNone(event)}}">
<a class="follow" href="javascript:void(0)" @*data-bind="event: { mouseover: $root.enableDetails, mouseout: $root.disableDetails }"*@ target="_blank" title=""><span data-bind="text:ShareNum"></span></a>
<span class="share-list" style="display:none" @*data-bind="css: { display: $root.DisplayEnabled? 'inline' : 'none' }"*@>
<a href="javascript:void(0)" data-bind="click:function(event){ShareTXQQ(ID)}" title="分享到腾讯QQ" class="icon icon-tqq"></a>
<a href="javascript:void(0)" data-bind="click:function(event){ShareTXZone(ID)}" title="分享到QQ空间" class="icon icon-qzone"></a>
<a href="javascript:void(0)" data-bind="click:function(event){ShareSina(ID)}" title="分享到新浪微博" class="icon icon-tsina"></a>
</span>
</div>
</div>
</dd>
</dl>
</div>
<div class="page" id="pager">
<a class="prev" title="上一页" href="javascript:void(0)" data-bind="click:previous">上一页</a>
<span data-bind="foreach:pageNumbers" id="numList">
<a data-bind="text:num,click:$root.gotoPage,css:{thisclass:index==num }" class="thisclass"></a>
</span>
<a class="next" title="下一页" href="javascript:void(0)" data-bind="click:next">下一页</a>
</div>

<script type="text/javascript">

function NewsPage() {
//viewModel本身。用来防止直接使用this的时候作用域混乱
var self = this;
//数据
this.items = ko.observableArray();
//要访问的页码
this.pageIndex = ko.observable(1);
//总计页数
this.pageCount = ko.observable(1);
//页码数
this.pageNumbers = ko.observableArray();
//当前页
this.currengePage = ko.observable(1);
//hover
this.DisplayEnabled = ko.observable(false);

this.refresh = function () {
//限制请求页码在该数据页码范围内
if (self.pageIndex() <= 1)
self.pageIndex(1);
if (self.pageIndex() >= self.pageCount()) {
self.pageIndex(self.pageCount());
}
//post异步加载数据
$.post("/ArticleSystem/Collect_Json", { pageIndex: self.pageIndex(), pageSize: 5 }, function (obj) {
// 加载新的数据前,先移除原先的数据
self.items.removeAll();
self.pageNumbers.removeAll();
self.pageCount(obj.PageTotal);
self.currengePage(obj.PageIndex);
for (var i = 1; i <= obj.PageTotal; i++) {
//装填页码
var p = { num: i, index: obj.PageIndex };
self.pageNumbers.push(p);
}
//for...in 语句用于对数组或者对象的属性进行循环操作。
//for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
for (var i in obj.Article) {
//装填数据
self.items.push(obj.Article[i]);
}
})
}
//鼠标移入时候
this.enableDetails = function () {
self.DisplayEnabled(true);
}
//鼠标移出时候
this.disableDetails = function () {
self.DisplayEnabled(false);
}
//请求第一页数据
this.first = function () {
self.pageIndex(1);
self.refresh();
}
//请求下一页数据
this.next = function () {
self.pageIndex(self.currengePage()+ 1);
self.refresh();

}
//请求先前一页数据
this.previous = function () {
self.pageIndex(self.currengePage() - 1);
self.refresh();
}
//请求最后一页数据
this.last = function () {
self.pageIndex(this.pageCount() - 1);
self.refresh();
}
//跳转到某页
this.gotoPage = function (data, event) {
self.pageIndex(data.num);
self.refresh();
}
this.refresh();
}
var viewModel = new NewsPage();
ko.applyBindings(viewModel);

//
function ShareInline(event) {
$(".share-list:eq("+event.index+")").css("display", "inline");
}

function ShareNone(event) {
$(".share-list:eq(" + event.index + ")").css("display", "none");
}
function Delete(FavoriteId) {
if (confirm('确定要从收藏中删除这篇文章吗?')) {
$.post("/ArticleSystem/DeleteCollenction", { FavoriteId: FavoriteId }, function (data) {
if (data) {
window.location.href = "/ArticleSystem/Collect";
}
});
}
}

Knockout学习,添加模板,事件,Mouseover,mouseout的更多相关文章

  1. 关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别

    轮播中大多会选择mouseover和mouseout  这个时候是没有任何问题的 但当遇到有css3动画的时候,会发现移入移出过快 动画还没加载完成就需要执行下一个动画,完了动画样式就错乱了. 这时候 ...

  2. Knockout学习之模板绑定器

    模板绑定器 如今页面结构越来越复杂,仅仅依靠foreach已经不足以我们的使用,这个时候我们就需要模板的存在,模板的优点自然很多,首先会让页面整洁,同时修改起来也可以方面的定位,最重要的是ko可以条件 ...

  3. vue.js鼠标经过和离开事件 mouseover mouseout

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code @mouseover="showEwm(1)" @mouseout ...

  4. jQuery mouseover,mouseout事件多次执行的问题处理

    控制鼠标移上移下事件,在使用Jquery 的mouseover,mouseout事件时,元素内部含有其它元素,会造成该事件多次的触发的情况. 问题解析 在用到mouseover和mouseout事件来 ...

  5. CC2540 OSAL 学习其中原理,以及 给任务 添加 一个事件(定时发送串口消息)

    参考学习大神博客: http://blog.csdn.net/feilusia/article/details/51083953 : http://blog.csdn.net/xiaoleiacmer ...

  6. 从零开始学习jQuery (五) 事件与事件对象

    本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...

  7. JavaScript高级程序设计学习笔记之事件

    1.事件流 事件流描述的是从页面中接收事件的顺序. 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播 ...

  8. asp.net学习之GridView事件、GridViewRow对象

    原文:asp.net学习之GridView事件.GridViewRow对象 1. GridView控件的事件 GridView有很多事件,事件可以定制控件的外观或者行为.事件分为三类     1.1 ...

  9. JS学习笔记6_事件

    1.事件冒泡 由内而外的事件传播(从屏幕里飞出来一支箭的感觉) 2.事件捕获 由表及里的事件传播(力透纸背的感觉) 3.DOM事件流(DOM2级) 事件捕获阶段 -> 处于目标阶段 -> ...

  10. jQuery学习笔记(事件)

    1. 加载DOM jQuery用$(document).ready()方法来代替传统JavaScrpt的window.onload方法.但它们执行时机有所不同,window.onload在网页所有元素 ...

随机推荐

  1. Centos7安装Nginx实战

    一.背景 最近在写一些自己的项目,用到了nginx,所以自己动手来在Centos7上安装nginx,以下是安装步骤. 二.基本概念以及应用场景 1.什么是nginx Nginx是一款使用C语言开发的高 ...

  2. MVC源码分析 - Authorize授权过滤器

    从 上一篇 其实能看到, 程序执行的过滤器, 有四种 : 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某 ...

  3. NHibernate with ASP.NET MVC 入门示例

    目的:初步了解NHibernate的用法,包括数据库的CRUD, 基于ASP.NET MVC 项目模板 步骤: 创建ASP.NET MVC 新项目 使用NuGet引入FluentNHibernate ...

  4. 【IT笔试面试题整理】给定二叉树先序中序,建立二叉树的递归算法

    [试题描述]:  给定二叉树先序中序,建立二叉树的递归算法 其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,固根节点已可从先序序列中分离.在中序序列中找到 ...

  5. MySQL 学习笔记 二

    Ø function 函数 函数的作用比较大,一般多用在select查询语句和where条件语句之后.按照函数返回的结果, 可以分为:多行函数和单行函数:所谓的单行函数就是将每条数据进行独立的计算,然 ...

  6. [转]WordPress 主题教程 #2:模板文件和模板

    本文转自:http://blog.wpjam.com/m/wp-theme-lesson-2-template-files-and-templates/ 模板文件(template files)和模板 ...

  7. 10.C#知识点:操作XML

    知识点目录==========>传送门 XML是什么就不用说了文本标记语言. 主要纪录如何对XML文件进行增删改查. Xml的操作类都存在System.xml命名空间下面. 应用型的直接上代码 ...

  8. 撩课-Web大前端每天5道面试题-Day27

    1.浏览器缓存? 浏览器缓存分为强缓存和协商缓存.当客户端请求某个资源时,获取缓存的流程如下: 先根据这个资源的一些 http header 判断它是否命中强缓存, 如果命中,则直接从本地获取缓存资源 ...

  9. python基础训练题2-元组,字典

    1,判断值在元组中 >>> a = ( 1, 2, 3, 4, 10 ) >>> 10 in a True >>> ' in a False 2, ...

  10. JavaScript弹出窗口方法

    本文实例汇总了常用的JavaScript弹出窗口方法,供大家对比参考,希望能对大家有所帮助.详细方法如下: 1.无提示刷新网页: 大家有没有发现,有些网页,刷新的时候,会弹出一个提示窗口,点“确定”才 ...