首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery -仅在事件委托系列中的最后一个事件处理程序触发器?

JQuery -仅在事件委托系列中的最后一个事件处理程序触发器?
EN

Stack Overflow用户
提问于 2015-10-30 17:51:13
回答 1查看 176关注 0票数 0

我一直试图从零开始构建一个图像滑块,它将自动滑动,但当点击底部的对应点时,会转到特定的幻灯片。

当我隔离和测试我的每个事件委托单独单击函数时,它们可以很好地让不同的照片来回滑动。但是当所有的函数都在一起时,只有第三个函数起作用。你能帮上忙吗?

为了演示,我创建了一个这里是简单的模拟滑块,它包括以下JavaScript/jQuery:

代码语言:javascript
运行
复制
'use strict';

$(document).ready(function () {

//DOM cache 
var $slider = $('section');
var $slideContainer = $slider.find('ul');
var $windowWidth = $slider.css('width');
var $windowWidthUnitless = $slider.width();
var $dot1 = $slider.find('#dot-1');
var $dot2 = $slider.find('#dot-2');
var $dot3 = $slider.find('#dot-3');

//config
var width = $windowWidth;
var doubleWidth = $windowWidthUnitless * 2;

$($slider).on('click',$dot1,function() {
    $slideContainer.css('margin-left', 0);
    $dot1.addClass('filled');
    $dot2.removeClass('filled');
    $dot3.removeClass('filled');
})

$($slider).on('click',$dot2,function() {
    $slideContainer.css('margin-left', '-' +width);
    $dot1.removeClass('filled');
    $dot2.addClass('filled');
    $dot3.removeClass('filled');
})

$($slider).on('click',$dot3,function() {
    $slideContainer.css('margin-left', "-" +doubleWidth +"px");
    $dot1.removeClass('filled');
    $dot2.removeClass('filled');
    $dot3.addClass('filled');
})

});

对此html采取行动:

代码语言:javascript
运行
复制
<section>
<ul>
    <li>
        <div id="slide-1"></div>
    </li>
    <li>
        <div id="slide-2"></div>
    </li>
    <li>
        <div id="slide-3"></div>
    </li>
    <li>
        <div id="slide-1"></div>
    </li>
</ul>
<div class="selected" id="dot-1"></div>
<div id="dot-2"></div>
<div id="dot-3"></div>

和CSS

代码语言:javascript
运行
复制
* {
margin: 0;
padding: 0;
} /* just my default */

section {
overflow: hidden;
width:400px;
height:400px;
}

section ul {
width:1600px;
}

section li {
list-style-type: none;
display: inline;
float: left;
}

[id*="slide-"] {
height: 400px;
width: 400px;
}

[id*="dot-"] {
float:left;
height: 40px;
width: 40px;
border-radius: 20px;
position: relative;
bottom: 45px;
}

(如果这有帮助的话,这里是我的滑块的更精确,但仍然很简单版本,它实际上也是自动滑动的,当点被点击时,它会停下来,转到特定的幻灯片上。同样,它只出现在最后一张幻灯片上。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-30 18:22:53

在每个$($slider).on('click',$dotNumber,function() {...}行中,将$dotNumber替换为'#dot-number'

示例:$($slider).on('click','#dot-1',function() {...}

我不知道是否有一种特定的方式传递一个jQuery对象来指定一个子元素到目标,但我知道添加CSS选择器作为第二个参数可以做到这一点。根据手册页,第二个参数(如果不是回调)是一个字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33442046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档