首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对resize事件使用wrap和unwrap

对resize事件使用wrap和unwrap
EN

Stack Overflow用户
提问于 2017-08-25 11:26:14
回答 1查看 221关注 0票数 0

我有一些jQuery来传递一个图像给一个模态。当有人点击一个较小的图像时,它会在模式中显示该图像。代码本身运行良好。我遇到的问题是屏幕尺寸较小。当屏幕宽度较小时,图像占据设备的整个宽度,并且实际上大于模式中显示的图像。在这些情况下,我想删除图像周围的锚标记,这样它就不再是可点击的。下面是HTML的一个示例:

代码语言:javascript
复制
<a href="#" class="imgpop" data-target="#image-popup" data-toggle="modal">
    <img src="images/carbcalc.png" alt="" class="img-fluid">
</a>

我使用jQuery unwrap删除锚定标记,并使用wrap将其放回原处。代码可以工作,但问题是我正在执行resize中的函数。调整大小时,锚标签有时会被移除,有时不会。其他时候,多个锚标签会将图像包裹起来。

这是我正在使用的jQuery:

代码语言:javascript
复制
$(window).on('resize', function() {
    if ($(window).width() == 991) {
        console.log("991");
        $('section a.imgpop img').unwrap();
    }

    if ($(window).width() == 992) {
        console.log("992");
        $('section a.imgpop img').wrap('<a href="#" class="imgpop" data-target="#image-popup" data-toggle="modal"></a>');
    }
});

我想做的是,如果屏幕宽度小于992,则移除锚点,如果屏幕是>= 992,则重新添加锚点。

代码有时会起作用。有时,我会将值记录到控制台中,但它并不像正常情况下那样频繁。

有没有更好的方法来处理这件事?

编辑:

使用下面的建议,以及我自己的一些调整,我有以下几点:

代码语言:javascript
复制
$(window).on('resize', function() {
    var img = $('section img');

    if ($(window).width() < 992) {
        if (img.parent().hasClass('imgpop')) {
            $(img).unwrap();
        }
    }
    else if ($(window).width() >= 992) {
        if (!img.parent().hasClass('imgpop')) {
            $(img).wrap('<a href="#" class="imgpop" data-target="#image-popup" data-toggle="modal"></a>');
        }
    }
});

它可以工作,并用锚标签重新包装img标签,但在那之后,锚标签不再以它应该的方式工作。这是我用来将正确的图像放入模式的代码:

代码语言:javascript
复制
$('a').on('click', function() {
    if ($(this).hasClass('imgpop')) {
        let img = $(this).find('img');
        let modal = $('.modal .modal-dialog .modal-content .modal-body img');
        modal.attr('src', img.attr('src'));
    }
})

在将大小减小到<992之前,当单击其中一个图像时将调用此事件。一旦我减小了大小,然后将其调整为>=992,事件就不再触发,并且我在模式中也得不到图像。在打开和重新包装图像之前和之后,我使用Firefox查看了HTML显示源代码,它看起来完全一样。

任何想法,我可以解决这个问题,并完成这个项目。

EN

回答 1

Stack Overflow用户

发布于 2017-08-25 11:44:46

你只需要检查一下就可以了。

代码语言:javascript
复制
$(window).on('resize', function() {
if ($(window).width() <= 991) {
    console.log("991");
if ( $('section img.img-fluid').parent().is ('a') {
    $('section img.img-fluid').unwrap();
}
}

if ($(window).width() >= 992) {
    console.log("992");
if ( !$('section img.img-fluid').parent().is ('a') {
    $('section img.img-fluid').wrap('<a href="#" class="imgpop" data-target="#image-popup" data-toggle="modal"></a>');
}
}
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45873983

复制
相关文章

相似问题

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