对来自ajax请求的数据进行Jquery Capty效果

时间:2013-12-05 21:51:52

标签: jquery html css ajax

如何从ajax请求中对数据加载产生capty效应? 我在主页面有一些潜水,并从ajax加载更多请求,capty工作正常主数据但不能处理从ajax请求加载的数据,我尝试在ajax结果中添加capty函数,但旧的div显示黑屏。 / p>

如何使用capty来获取来自ajax请求的数据?

指数:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Capty</title>
<link rel="stylesheet" href="css/jquery.capty.css">
<script src="js/jquery.min.js"></script>
<script src="js/jquery.capty.js"></script>
<script type="text/javascript">
$(function() {
    $('.detail').capty({
        height:     163,
        width:      200,
        opacity:    .8,
        animation: 'fade',
        speed:      400
    });
});

$(function() {
    $("#more").on("click", function() {
        var ID=$(".box:last").attr("id");
        $.post("ajax/more.html",
        function(data){
            $(".box:last").after(data);
        });
    });
});
</script>
</head>

<body>
<div id="holder">
    <div class="box" id="1">
        <div class="detail" name="#info-1">detail 1</div>
        <div id="info-1" class="info">info 1</div>
    </div>

    <div style="clear:both"></div>
    <div id="more">more</div>
</div>

</body>
</html>

的CSS:

@CHARSET "UTF-8";

#holder{
    padding: 0px 0px;
    margin: 20px auto;
    width: 800px;
    background:#CC9;
}
#more {
    padding:10px 10px;
    background:#CCF;
    width: 30px;
    margin: 50px auto;
    cursor:pointer;
    float: left;
}
.box {
    float:right;
    margin:5px 7px;
    height:163px;
    width:198px;
    background: #F2F2F2;
    border: 1px solid #2A5F86;
}


.detail {
    width:198px;
    height:163px;
    background: none;
}
.info {
    margin: 0px auto;
    width: 178px;
    height: 148px;
    background: none;
    border: 0px solid #DDDDDD;
    padding: 0px 0px;

    overflow-x: hidden;
    overflow-y: hidden;
    position: relative;
}
div.capty-caption {
    background-color: #000;
    color: #FFF;
    font-size: 11px;
    text-shadow: 1px 1px 0 #222;
    border-radius: 0px 0px 3px 3px;
    width: 198px;
    max-width: 198px;
    min-width: 198px;
    height: 163px;
    min-height:163px;
    max-height:163px;
}

div.capty-caption a {
    color: #318DAD;
    font-size: 11px;
    text-decoration: none;
    text-shadow: none;
}

.capty-wrapper {
    height: 150px;
    overflow-x: hidden;
    overflow-y: hidden;
    position: relative;
    width:198px;
    min-width:198px;
    max-width:198px;
    height: 163px;
    min-height:163px;
    max-height:163px;
    background:none;
}

AJAX:

<div class="box" id="1">
        <div class="detail" name="#info-1">detail 1</div>
        <div id="info-1" class="info">info 1</div>
</div>

jQuery Capty - 一个标题插件 - http://wbotelhos.com/capty 插件也可以在github上找到。

1 个答案:

答案 0 :(得分:1)

从ajax加载数据时,其元素不会自动使用触发器更新。 加载ajax时,您还需要在其上调用.capty()。 这是一个例子:

function(data){
    $(".box:last").after(data);
    $(".detail",".box:last").capty({
       height:     163,
       width:      200,
       opacity:    .8,
       animation: 'fade',
       speed:      400
    }) ;
});

注意$()选择器中的序列。第一个真的是最后一个。 因此,选择器会首先找到“.box:last”,然后才会在其中搜索“详细信息”类find()

===编辑开始===

更改后的代码将起作用,但ajax返回的数据必须包含唯一的ID,而ajax / more.html是您在主体中的副本。 请考虑更改ID。 当我自己改变它时它起作用:              细节2         信息2     

请参阅小提琴:http://jsfiddle.net/5K3nq/我将您的来源复制到的地方。 而不是调用$.post()我调用了函数greg(),它返回你的ajax应该返回的内容(除了它包含我的更改。)向右滚动结果窗口以查看正方形。

===编辑结束===

希望它会有所帮助。

PS。在jQuery中,使用一个函数在整个页面已经加载时初始化所有元素:

$(document).ready(function(){
    // Now, I know the page has completely loded.
    // All initialization comes here.
});