在同一元素上单击两次,然后在另一个元素上单击两次,使第一个元素进入“单击”状态
clicking twice on the same element and then on another element brings the first elment to the "clicked" state
我有一个交互式插图,您可以将鼠标悬停在元素上,然后如果您单击它们,您会看到一个弹出窗口,单击的元素会变黑。它工作得很好,但是单击和悬停代码存在问题。如果连续单击同一元素两次,然后在另一个元素上单击,则第一个元素将变为黑色。自己尝试:http://labs.tageswoche.ch/grafik_osze
这是代码:
var sourceSwap = function () {
var $this = $(this);
if (!$this.hasClass('active')) {
var newSource = $this.data('alt-src');
$this.data('alt-src', $this.attr('src'));
$this.attr('src', newSource);
}
};
var makeActive = function() {
var $this = $(this);
// bring the active back (if any) to the first state
if ($('img.active').length) {
var newSource = $('img.active').data('alt-src');
$('img.active').data('alt-src', $('img.active').attr('src'));
$('img.active').attr('src', newSource);
$('img.active').removeClass('active');
}
$this.toggleClass('active');
}
$(function() {
$('img[data-alt-src]')
.each(function() {
new Image().src = $(this).data('alt-src');
})
.hover(sourceSwap, sourceSwap);
$('img[data-alt-src]').on('click', makeActive);
});
自己尝试:http://jsfiddle.net/8wtvvka5/
我在小提琴上试过这个:
function swap(e)
{
var src = e.attr('src');
var active = e.hasClass('active');
var dark = src.indexOf('_h.png', src.length - '_h.png'.length) !== -1;
e.attr('data-src-dark', dark);
if (active || e.attr('data-src-dark') == true) return;
e.attr('src', e.attr('data-alt-src'));
e.attr('data-alt-src', src);
return active;
}
var sourceSwap = function ()
{
if (!$(this).hasClass('active'))
{
swap($(this));
}
};
var makeActive = function()
{
var active = $(this).hasClass('active');
$('img.active').each(function()
{
$(this).removeClass('active'); swap($(this));
});
if (active) $(this).removeClass('active');
else $(this).addClass('active');
swap($(this));
}
$(function() {
$('img[data-alt-src]')
.each(function() {
new Image().src = $(this).data('alt-src');
})
.hover(sourceSwap, sourceSwap);
$('img[data-alt-src]').on('click', makeActive);
});
$('img.active') 是一组完整的元素,因此您应该使用"each"函数来处理它们
只需复制并粘贴以摆弄自己
相关文章:
- 单击元素外部时进行JQuery
- 单击p元素时的javascript触发事件
- 单击元素的x/y点
- 单击元素两次后执行操作
- 在使用jQuery第二次单击元素类后开始操作
- 页面加载后自动单击元素
- 检查气泡中的单击元素
- 单击元素时出现问题,这些元素是用.html()添加到页面的
- 单击元素时移除类并添加类
- 单击元素后Jquery选择器不工作
- 在单击元素部分时显示元素的代码
- 如果用户多次单击元素,如何避免争用条件
- 单击元素时,JQuery 不会更改具有“活动”类的元素
- 在 JavaScript / jQuery 回调中使用“this”更改单击元素的文本
- 如何防止在拖动时单击元素
- 通过 jquery .on() 函数将单击元素的属性值传递给外部函数
- Angularjs 指令单击元素
- jQuery 和单击元素中的第一个元素
- 单击元素时重新加载 iframe src
- 防止单击元素上的单击事件