jQuery使用Ajax使用数据属性填充div

时间:2016-09-12 11:45:59

标签: javascript jquery html ajax

我有以下(简化的)HTML代码:

<div class="column span-4">
    <img src="image1">
    <h2>Title 1</h2>
    <p>Excerpt 1</p>
    <a href="#" class="button package_info" data-title="Title 1" data-img="image1" data-excerpt="Excerpt 1" data-vid="video_url_1">More Info</a>
</div>

<div class="column span-4">
    <img src="image2">
    <h2>Title 2</h2>
    <p>Excerpt 2</p>
    <a href="#" class="button package_info" data-title="Title 2" data-img="image2" data-excerpt="Excerpt 2" data-vid="video_url_2">More Info</a>
</div>

    <div class="column span-4">
    <img src="image1">
    <h2>Title 3</h2>
    <p>Excerpt 3</p>
    <a href="#" class="button package_info" data-title="Title 3" data-img="image3" data-excerpt="Excerpt 3" data-vid="video_url_3">More Info</a>
</div>

<div class="package_overview" style="width:100%;height:100%;top:100%;background:#ffffff;position:fixed;padding:35px;z-index:9999;transition:0.15s ease-out all;">
    <div class="package_overview_close"><i class="fa fa-close"></i></div>
</div>

这里的想法是,当用户点击“更多信息”时,div“package_overview”显示,并且该div是他们点击的链接上的数据属性中包含的信息(即数据标题,数据摘录) ,data-img,data-vid等 - 在我的实际代码中有更多,但我保持这么简单。)

这是我目前的jQuery,

jQuery(function($){
        $('a.package_info').click(function( event ) {
        event.preventDefault();
        $('.package_overview').css('top','0');
    });
    $('.package_overview_close').click(function( event ) {
        $('.package_overview').css('top','100%');
    });

显然,这只会打开并关闭div,但是当用户点击它时,如何用数据属性填充它?

2 个答案:

答案 0 :(得分:1)

使用prop获取锚链接的属性,并使用html()函数填充html内部。

$('a.package_info').click(function( event ) {
        event.preventDefault();
        $('.package_overview').css('top','0');
        var title = $(this).prop('data-title');
        var excerpt= $(this).prop('data-excerpt'); 
        .
        .
        $('.package_overview').html('Title : '+ title + '<br/>' + 'Excerpt : ' + excerpt);

  });

答案 1 :(得分:1)

您可以使用data()方法管理data-*属性

$('a.package_info').click(function( e ) {
        e.preventDefault();
        $('.package_overview').css('top','0');
        var title = $(this).data('title');
        var excerpt= $(this).data('excerpt'); 
        $('.package_overview').html('Title : '+ title + '<br/>' + 'Excerpt : ' + excerpt);
        return false;
});