我有一个jQuery脚本,可以创建一个轮播来在用户点击时左右旋转图像。起初,我并没有计划在一个页面上放置多个旋转木马,但现在已经到了需要。
问题是,当用户点击按钮时,我不知道如何引用一个旋转木马(单击一个)。
继承剧本
$(function()
{
// Put last item before first item, in case user clicks left
$('.carousel li:first').before($('.carousel li:last'));
// Right click handler
$('.right-button img').click(function()
{
// Get width plus margins
var item_width = $('.carousel li').outerWidth() + (2 * parseInt($('.carousel li').css('margin-right')));
// Get left indent
var orig_left_indent = $('.carousel').css('left');
// Calculate new left indent
var left_indent = parseInt(orig_left_indent) - item_width;
$('.carousel:not(:animated)').animate({'left': left_indent}, 500, 'swing', function()
{
// Put first item after last item
$('.carousel li:last').after($('.carousel li:first'));
// Set left indent to default
$('.carousel').css({'left': orig_left_indent});
});
});
// Left click handler
$('.left-button img').click(function()
{
// Get width plus margins
var item_width = $('.carousel li').outerWidth() + (2 * parseInt($('.carousel li').css('margin-right')));
// Get left indent
var orig_left_indent = $('.carousel').css('left');
// Calculate new left indent
var left_indent = parseInt(orig_left_indent) + item_width;
$('.carousel:not(:animated)').animate({'left': left_indent}, 500, 'swing', function()
{
// Put last item before first item
$('.carousel li:first').before($('.carousel li:last'));
// Set left indent to default
$('.carousel').css({'left': orig_left_indent});
});
});
// Close button handler
$('.carousel-container .close-button img').click(function()
{
$('.carousel-container').fadeOut(1000);
});
});
截至目前,当您在任何旋转木马上向右或向左单击时,它们都会移动。我不知道如何获得点击旋转木马的参考。
继承人HTML
<div class="carousel-container clearfix">
<div class="header close-button">
<strong>Check These Out</strong>
<?php echo html::image('media/images/close.gif'); ?></div>
<div class="left-button"><?php echo html::image('media/images/left_arrow.png'); ?></div>
<div class="carousel-inner">
<ul class="carousel">
<?php foreach ($items as $item): ?>
<li> ... </li>
<?php endforeach; ?>
</ul>
</div>
<div class="right-button"><?php echo html::image('media/images/right_arrow.png'); ?></div>
</div>
我如何实现这一点,我不知道如何引用用户点击的轮播,因为箭头是轮播的子元素。
编辑:感谢您的回答。 carousel = $(this).parent()
有效,但我如何检查轮播是否:使用选择器和新轮播变量进行动画处理?
$(':animated',carousel)?
答案 0 :(得分:30)
在事件处理程序内部,变量:
$(this)
将为您提供调用元素。从那里,要获取包含div,您可以使用parent()函数:
$(this).parent()
使用它来浏览DOM。
答案 1 :(得分:1)
使用.parent()函数上升一个级别。您的代码可能如下所示:
$('.right-button img').click(function()
{
carousel = $(this).parent();
//bunch of code
}
答案 2 :(得分:1)
由于您的动作标签嵌套在轮播中的第一级,您可以在每个功能中执行此操作以了解它属于:
var parent = $(this).parent().get(0);
实际上会为您提供父对象,您现在可以使用它。