Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery jCapSlide在多个动态图像上的实现_Jquery_Umbraco - Fatal编程技术网

jQuery jCapSlide在多个动态图像上的实现

jQuery jCapSlide在多个动态图像上的实现,jquery,umbraco,Jquery,Umbraco,我发现了这个很酷的jQuery插件jCapSlide,它通过向上滑动覆盖div,在图像上方悬停时显示图像标题 问题是,我找不到任何关于它的文档,我找到的一些关于它的说明说,我必须按ID定位元素,但在我的情况下,这是不可能的,因为我正在动态生成图像,无法保证会有多少图像。这就是我到目前为止所做的:(我使用的是Umbraco CMS,图像是用Razor宏创建的) var products=Model.antestorself(1).子体(“产品”)。其中(“可见”)。项; foreach(产品中的v

我发现了这个很酷的jQuery插件jCapSlide,它通过向上滑动覆盖div,在图像上方悬停时显示图像标题

问题是,我找不到任何关于它的文档,我找到的一些关于它的说明说,我必须按ID定位元素,但在我的情况下,这是不可能的,因为我正在动态生成图像,无法保证会有多少图像。这就是我到目前为止所做的:(我使用的是Umbraco CMS,图像是用Razor宏创建的)

var products=Model.antestorself(1).子体(“产品”)。其中(“可见”)。项;
foreach(产品中的var产品)
{
if(product.favorite==true)
{
@产品名称
}
}    
在我的模板的头部我有这个

   <script type="text/javascript">
        $(document).ready(function () {
            $('.sqrProductsImage').capslide({
                    caption_color    :   '#FFFFFF',
                    caption_bgcolor  :   'rgb(0,148,217)',
                    overlay_bgcolor  :   'rgb(0,148,217)',
                    border           :   '',
                    showcaption      :   false

            });
        });
    </script>

$(文档).ready(函数(){
$('.sqrProductsImage').capslide({
标题(颜色"FFFFFF",,
标题(颜色):"rgb(0148217)",
叠加颜色:“rgb(0148217)”,
边界:“”,
字幕:错
});
});
我有所有的js和css文件都包含在头部,但什么都没有发生。有人能提供一些建议吗


谢谢

这不是一个真正的翁布拉科问题

您没有提供对您正在使用的脚本本身的任何引用,因此我们所能做的就是猜测实现。然而,我的建议是,如果您必须使用ID,那么只需使用特定类在所有元素上迭代并获取ID,这似乎效率很低

未经测试的示例演示我的意思:

<script type="text/javascript">
    $(document).ready(function () {
    var elements = $('.sqrProductsImage');
    $.each(elements, function() {
            $($(this).att("id")).capslide({
                caption_color    :   '#FFFFFF',
                caption_bgcolor  :   'rgb(0,148,217)',
                overlay_bgcolor  :   'rgb(0,148,217)',
                border           :   '',
                showcaption      :   false
            });
        });
    });
</script>

$(文档).ready(函数(){
var元素=$('.sqrProductsImage');
$.each(元素、函数(){
$($(this.att(“id”).capslide({
标题(颜色"FFFFFF",,
标题(颜色):"rgb(0148217)",
叠加颜色:“rgb(0148217)”,
边界:“”,
字幕:错
});
});
});

参考资料:

我最终通过这样做解决了这个问题。编写了我自己的jQuery脚本

HTML:

jQuery:

$(document).ready(function () {
    var div = $('.outerSqrProducts');
    var overlay = $('.overlay');
    var title = $('.ic_caption');
    var speed = 500;

    div.each(function (i) {
        $(this).attr('id', 'image' + i);
        var divId = $(this).attr('id');

        $('#' + divId).hover(function () {
            // make background opaque
            $('#' + divId).find('.overlay').fadeIn(speed);
            // slide down the title
            $('#' + divId).find('.ic_caption').slideDown(speed);
        },

        function () {
            $('#' + divId).find('.ic_caption').slideUp(speed);
            $('#' + divId).find('.overlay').fadeOut(speed);

        });
    });

});

非常有魅力。

谢谢您的回复。我用umbraco标记它,因为我必须解释我是动态生成这些图像的。此后,我尝试编写自己的脚本来实现同样的效果,它适用于一个图像,但不适用于多个图像。我试过你的方法,但恐怕不行。用什么方法不行?你能提供一些更详细的信息吗?或者更好的方法是在上面加一个例子。您还需要确保所有的.sqrProductsImage元素都有id,而在您的示例中它们没有id。看看这个。我试过在你们的帖子中使用$($(this.att(“id”)),但不起作用,所以我拿出一些来看看是否有什么不同。我已经解决了。给主div一个动态id,然后在其中找到其他div。
<body>

    <div class="outerSqrProducts">
        <div class="sqrProductsImage">
            <a href="#">
                <img src="http://www.avenir-accessories.co.uk/media/4367/beewi-fiat-500-white.jpg"/>
            </a>
        </div>
        <div class="overlay"></div>
        <div class="ic_caption" id="caption1">
            <h2 class="centerText">Title</h2>   
         </div>
    </div>

    <!-- this could be repeated x amount of times in the dynamic code -->
    <div class="outerSqrProducts">
       <div class="sqrProductsImage"> <a href="#">
        <img src="http://www.avenir-accessories.co.uk/media/4367/beewi-fiat-500-white.jpg"/>
        </a>


        </div>
        <div class="overlay"></div>
        <div class="ic_caption">
                <h2 class="centerText">Title</h2>   
        </div>
    </div>

    <body>
body {
    background-color: #0097F0;
}
.centerText {
    text-align: center;
}
.outerSqrProducts
{
    display: table-cell;
    vertical-align: middle;
    height: 234px;
    width: 234px;
    background-color: #FFF; 
    position: relative;

}
.sqrProductsImage 
{
    display: inline-block;
}
.sqrProductsImage img {
    max-height: 234px;
    max-width: 234px;
}
.overlay, .ic_caption {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    display: none;
}
.overlay {
    background-color: rgba(0, 151, 240, 0.5);
    height: 100%;
}
.ic_caption {
    background-color: rgba(0, 151, 240, 0.8);
    height: 50%;
}
$(document).ready(function () {
    var div = $('.outerSqrProducts');
    var overlay = $('.overlay');
    var title = $('.ic_caption');
    var speed = 500;

    div.each(function (i) {
        $(this).attr('id', 'image' + i);
        var divId = $(this).attr('id');

        $('#' + divId).hover(function () {
            // make background opaque
            $('#' + divId).find('.overlay').fadeIn(speed);
            // slide down the title
            $('#' + divId).find('.ic_caption').slideDown(speed);
        },

        function () {
            $('#' + divId).find('.ic_caption').slideUp(speed);
            $('#' + divId).find('.overlay').fadeOut(speed);

        });
    });

});