- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
现场演示: http://jsfiddle.net/stapiagutierrez/KKdsb/29/
我只是想为网站创建我自己的星级评分 UI,到目前为止,它可以正常工作,但我想看看我是否可以在不牺牲易读性的情况下精简我的代码。
因为我是 jQuery 的新手,所以我可能正在以迂回的方式做事。
有什么改进的建议吗?
ul {
list-style-type:none;
margin-top:10px;
margin-left:10px;
border:1px solid #333;
border-radius:8px;
overflow:hidden;
width:111px;
cursor:pointer;
}
li {
float:left;
margin-left:5px;
padding-top:2px;
}
<ul>
<li>
<img class="onestar rating" src="http://i.imgur.com/8LA1i.png" alt="no-star" />
</li>
<li>
<img class="twostar rating" src="http://i.imgur.com/8LA1i.png" alt="no-star" />
</li>
<li>
<img class="threestar rating" src="http://i.imgur.com/8LA1i.png" alt="no-star" />
</li>
<li>
<img class="fourstar rating" src="http://i.imgur.com/8LA1i.png" alt="no-star" />
</li>
<li>
<img class="fivestar rating" src="http://i.imgur.com/8LA1i.png" alt="no-star" />
</li>
</ul>
$(document).ready(function() {
$(".rating").click(function() {
if ($(this).hasClass("onestar")) {
alert("Clicked on 1 star!");
}
else if ($(this).hasClass("twostar")) {
alert("Clicked on 2 stars!");
}
else if ($(this).hasClass("threestar")) {
alert("Clicked on 3 stars!");
}
else if ($(this).hasClass("fourstar")) {
alert("Clicked on 4 stars!");
}
else if ($(this).hasClass("fivestar")) {
alert("Clicked on 5 stars!");
}
});
$(".rating").mouseleave(function() {
$(".rating").each(function() {
$(this).attr("src", "http://i.imgur.com/8LA1i.png");
});
});
$(".rating").mouseover(function() {
if ($(this).hasClass("onestar")) {
$(".onestar").attr('src', 'http://i.imgur.com/X68bI.png');
}
else if ($(this).hasClass("twostar")) {
$(".onestar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".twostar").attr('src', 'http://i.imgur.com/X68bI.png');
}
else if ($(this).hasClass("threestar")) {
$(".onestar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".twostar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".threestar").attr('src', 'http://i.imgur.com/X68bI.png');
}
else if ($(this).hasClass("fourstar")) {
$(".onestar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".twostar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".threestar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".fourstar").attr('src', 'http://i.imgur.com/X68bI.png');
}
else if ($(this).hasClass("fivestar")) {
$(".onestar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".twostar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".threestar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".fourstar").attr('src', 'http://i.imgur.com/X68bI.png');
$(".fivestar").attr('src', 'http://i.imgur.com/X68bI.png');
}
});
});
最佳答案
这有点有趣,这是 jsFiddle:http://jsfiddle.net/KKdsb/30/
注意:两个parent()
的用法在 mouseover
中发挥作用处理程序取决于您的 html 结构。我会推荐一个类或类似的类来访问父类 <ul>
元素直接使用$(this).closest('.classname')
.
jQuery 代码:
$(document).ready(function() {
$(".rating").click(function() {
var position = $(this).parent().index();
});
$(".rating").mouseleave(function() {
$(".rating").each(function() {
$(this).attr("src", "http://i.imgur.com/8LA1i.png");
});
});
$(".rating").mouseover(function() {
var position = $(this).parent().index() + 1;
$(this).parent().parent().find("li:lt("+position+") > img").each(function (i, e) {
$(e).attr('src', 'http://i.imgur.com/X68bI.png');
});
});
});
引用:
关于jQuery 大师,这段代码可以简化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961514/
没有远程仓库,只有一个本地仓库和两个分支。 $ git branch -a master * devel 以下命令是否在此上下文中相同/同义词? $ git pull . master 和 $ g
现场演示: http://jsfiddle.net/stapiagutierrez/KKdsb/29/ 我只是想为网站创建我自己的星级评分 UI,到目前为止,它可以正常工作,但我想看看我是否可以在不牺
我的表结构如下: Person 1-M PesonAddress Person 1-M PesonPhone Person 1-M PesonEmail Person 1-M Contract Con
我们有 FOSS Puppet 3.8.1 运行一个主机,在某个时候它开始响应 500 响应我们的客户对目录的请求。 完全不知道出了什么问题,我开始搜索一些日志,但一无所获。 /etc/puppet/
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 2年前关闭。 Improve t
这有点难以解释。 我有一个绝对定位的 float 辅助内容框。 它在所有情况下都非常有效。 除非您提交了表单但未填写字段(请参阅 here 并按下发送)。该框展开以显示错误,页脚下方有一个空白区域。我
我最近在 ubuntu 14.04 LTS 中安装了 foreman puppet,我在 virtual box 中运行它。我已将其 FQDN 配置为 127.0.1.1 ubuntu.localho
我克隆了一个远程分支git clone --single-branch --branch . 现在我想结帐大师。当我尝试时 git checkout master我收到此错误消息:error: p
这是jsfiddel : class Overlay constructor: -> @header = $(" header") @footer = $(" foot
我有两种编写二进制文件的方法:第一种适用于服务器接收到的与文件上传相对应的数据(即处理 enctype="multipart/form-data"的表单),第二个处理作为电子邮件附件发送的文件数据(即
我正在尝试为房地产商店的橱窗制作非交互式展示。 我已经有一段时间没玩过 setInterval() 了。 我的脚本第一次通过时,没问题。但是当它试图通过 getNextProperty() 获取下一个
我有太多跨度 Right Left 在 css 的帮助下用户应该看到“Left Right”。 在 html 中,“Right”应该在“Left”之前,这样 strip_tags() 会导致“Righ
我会发布我的整个类(class),也许有更多经验的人可以帮助我设计更好的东西。我对异步做事真的很陌生,所以我真的迷失在这里。希望我的设计不是太糟糕。 :P IMDB 类: public class I
是否可以使用 PHP 重新播放网络广播? radio 在端口 8000 可用。我想使用我的网络服务器并将 radio 流“传输”到端口 80。 这可能吗? 我已经在谷歌上搜索过了,我找到了 http:
在我的构建过程中,我将文件从一个目录复制到另一个目录,过滤掉一些不必要的文本,如下所示: 我想在被复制的每个
在 Windows VM 上使用 Master,同时尝试在 linux 容器中旋转容器。请帮助解决这个问题。 Even some idea/ guidance would be of great he
嘿,我遇到了一个问题,我的模板发生了变化,但主干模型似乎没有提供我需要的信息。我正在努力解决这个问题,以便我可以继续制作收藏品。我没有收到任何错误,我正在使用 Handlebars ,但也尝试了下划线
您好,我想在 SLES 12 SP 2 VM 上安装 puppet (puppetmaster),但我找不到任何文档或说明。 我已经试过了: Install Puppet on OpenSuse 11
这里是 HTML 初学者。 我已经无计可施了,但还是无法正常工作。你能看看吗? 我想要的是将 navleft 中的文本推到 hte 视口(viewport)的最左侧,将 navcenter 的内容居中
希望这没有我想象的那么复杂。 我有一个公司表,另一个工作表,第三个表包含每个公司每个工作中每个员工的单个条目。 注意:有些公司不会在某些职位上雇用员工,而有些公司在某些职位上会有不止一名员工。 公司表
我是一名优秀的程序员,十分优秀!