在我对投资组合进行排序后,Bootstrap 模式停止工作 [英] Bootstrap modal stops working after I sort portfolio

查看:18
本文介绍了在我对投资组合进行排序后,Bootstrap 模式停止工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 quicksand.js 构建一个可排序的投资组合,以显示有关单击的更多信息我正在使用 bootbox.js,现在它运行良好,但我最近遇到了一个问题.当您对作品集进行排序时,bootbox 不再起作用!

你可以在这里看到它的实际效果,滚动到投资组合部分,然后单击其中一张图像以查看它是否正常工作.然后排序并重试,你会看到我的问题.

更新: 使用控制台我发现了导致问题的原因,但我无法完全理解错误,我不得不一度使用 jquery migrate 来制作流沙功能,这是问题.这是错误:

console.trace() jquery-migrate-1.2.1.js:43migrateWarn jquery-migrate-1.2.1.js:43Object.defineProperty.get jquery-migrate-1.2.1.js:58$.fn.quicksand jquery.quicksand.js:34(匿名函数)portfolio.js:36jQuery.event.dispatch jquery-1.9.1.js:3074elemData.handle jquery-1.9.1.js:2750

这是我的 javascript:

 函数库(){$('#branding1').click(function() { bootbox.alert('<h4>Beach Me</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/branding1.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit. 整数 a elit turpis.Phasellus non varius mi. Nam bibendum in sollicitudin lacinia 的毛里斯.$('#web1').click(function() { bootbox.alert('<h4>Cloud INC.</h4><hr><p class="subtitle"><em>Branding<;/em></p><img src="img/projects/web1.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit. 整数 a elitturpis. Phasellus non varius mi. Nam bibendum 在 sollicitudin lacinia 的毛里斯.$('#print1').click(function() { bootbox.alert('<h4>steampuxk co.</h4><hr><p class="subtitle"><em>Branding</h4><hr>;/em></p><img src="img/projects/print1.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit. 整数 a elitturpis. Phasellus non varius mi. Nam bibendum 在 sollicitudin lacinia 的毛里斯.$('#branding2').click(function() { bootbox.alert('<h4>Life is Grand</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/branding2.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum 在 sollicitudin lacinia 的毛里斯.$('#print2').click(function() { bootbox.alert('<h4>Snapshot</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/print2.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit.Integer a elit turpis.Phasellusnon varius mi. Nam bibendum in sollicitudin lacinia 的毛里斯.$('#branding3').click(function() { bootbox.alert('<h4>Cityscape</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/branding3.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit.Integer a elit turpis.Phasellusnon varius mi. Nam bibendum in sollicitudin lacinia 的毛里斯.$('#web2').click(function() { bootbox.alert('<h4>Details</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/web2.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit.Integer a elit turpis.Phasellusnon varius mi. Nam bibendum in sollicitudin lacinia 的毛里斯.$('#print3').click(function() { bootbox.alert('<h4>SunnyDay</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/print3.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit.Integer a elit turpis.Phasellusnon varius mi. Nam bibendum in sollicitudin lacinia 的毛里斯.$('#web3').click(function() { bootbox.alert('<h4>火车站</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/web3.jpg"><p class="project-description">Lorem ipsum dolor sat amet, consectetur adipiscing elit. 整数 a elit turpis.Phasellus non varius mi. Nam bibendum in sollicitudin lacinia 的毛里斯.}var $itemsHolder = $('ul.thumbnails');var $itemsClone = $itemsHolder.clone();var $filterClass = "";$('ul.filter li').click(function(e) {e.preventDefault();$filterClass = $(this).attr('data-value');if($filterClass == 'all'){ var $filters = $itemsClone.find('li');}else { var $filters = $itemsClone.find('li[data-type='+ $filterClass +']');}$itemsHolder.quicksand($过滤器,{持续时间:1000},画廊);});$(文件).准备好(画廊);

和我的 html:

<div class="容器组合"><!-- 页面标题--><div class="row page-title"><div class="col-lg-12"><h3>投资组合</h3><小时><p>我们还创造了一些其他的东西.</p>

<!-- 投资组合过滤器--><div class="container text-center"><ul id="filterOptions" class="filter nav nav-pills center-pills"><li class="active"><a href="#" class="all">all</a></li><li><a href="#" class="print">print</a></li><li><a href="#" class="web">web</a></li><li><a href="#" class="branding">branding</a></li><li><a href="#" class="apps">apps</a></li><li><a href="#" class="graphic design">平面设计</a></li><li><a href="#" class="illustation">插图</a></li>

<!-- 投资组合项目--><div class="row"><ul class="ourHolder no-padding"><li class="item col-lg-4 no-padding" data-id="id-1" data-type="branding"><a href="javascript:void(0);"id="branding1"><img src="img/projects/thumbs/branding1.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>海滩我</h4><em>品牌</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-2" data-type="web"><a href="javascript:void(0);"id="web1"><img src="img/projects/thumbs/web1.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>克里斯·哈伯</h4><em>网页设计</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-3" data-type="print"><a href="javascript:void(0);"id="print1"><img src="img/projects/thumbs/print1.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>Bildende</h4><em>打印</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-4" data-type="branding"><a href="javascript:void(0);"id="branding2"><img src="img/projects/thumbs/branding2.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>SK邀请赛</h4><em>品牌</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-5" data-type="print"><a href="javascript:void(0);"id="print2"><img src="img/projects/thumbs/print2.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>Magz Killa</h4><em>打印</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-6" data-type="branding"><a href="javascript:void(0);"id="branding3"><img src="img/projects/thumbs/branding3.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>Synex</h4><em>品牌</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-7" data-type="web"><a href="javascript:void(0);"id="web2"><img src="img/projects/thumbs/web2.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>牛</h4><em>网页设计</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-8" data-type="print"><a href="javascript:void(0);"id="print3"><img src="img/projects/thumbs/print3.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>Tehc9btcxh</h4><em>打印</em></span></span></a><li class="item col-lg-4 no-padding" data-id="id-9" data-type="web"><a href="javascript:void(0);"id="web3"><img src="img/projects/thumbs/web3.jpg" alt="..."/><span class="portfolio-hover"><跨度><h4>信息手册</h4><em>品牌</em></span></span></a>

</节><!-- 结束作品集-->

如果有人可以看一下,我对此没有任何运气.

解决方案

更新:我看到流沙插件允许回调函数.

我相信这里发生的事情是元素在排序时丢失了它们的事件处理程序,因为元素被克隆并且 gallery() 函数仅在 (document) 上被调用.准备好.排序后显示的元素是新的",没有附加事件侦听器.

在portfolio.js 中,尝试通过quicksand 回调参数对项目进行排序后调用gallery() 函数

<代码>...//调用流沙并分配过渡参数$holder.quicksand($filteredData, {持续时间:800,缓动:'easeInOutQuad'}, 画廊);...

此外,我看到您在此处发布的代码中将画廊作为回调,但我认为这不是正在运行的代码.我认为portfolio.js 是用来进行排序的.

I am building a sortable portfolio using quicksand.js, to display more information on click I am using bootbox.js, now this is working pretty well but I recently ran into an issue. When you sort the portfolio bootbox not longer works!

You can see this in action here, scroll to the portfolio section and click one of the images to see it function correctly. Then sort it and try again and you will see my issue.

Update: Using console I found what is causing the issue but I cant fully understand the error, I had to use jquery migrate at one point to make quicksand function and that is part of the issue. Here is the error:

console.trace()                        jquery-migrate-1.2.1.js:43
migrateWarn                            jquery-migrate-1.2.1.js:43
Object.defineProperty.get              jquery-migrate-1.2.1.js:58
$.fn.quicksand                         jquery.quicksand.js:34
(anonymous function)                   portfolio.js:36
jQuery.event.dispatch                  jquery-1.9.1.js:3074
elemData.handle                        jquery-1.9.1.js:2750

Here is my javascript:

    function gallery(){
        $('#branding1').click(function() { bootbox.alert('<h4>Beach Me</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/branding1.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#web1').click(function() { bootbox.alert('<h4>Cloud INC.</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/web1.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#print1').click(function() { bootbox.alert('<h4>steampuxk co.</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/print1.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#branding2').click(function() { bootbox.alert('<h4>Life is Grand</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/branding2.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#print2').click(function() { bootbox.alert('<h4>Snapshot</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/print2.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#branding3').click(function() { bootbox.alert('<h4>Cityscape</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/branding3.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#web2').click(function() { bootbox.alert('<h4>Details</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/web2.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#print3').click(function() { bootbox.alert('<h4>SunnyDay</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/print3.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
        $('#web3').click(function() { bootbox.alert('<h4>Train Station</h4><hr><p class="subtitle"><em>Branding</em></p><img src="img/projects/web3.jpg"><p class="project-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer a elit turpis. Phasellus non varius mi. Nam bibendum in mauris at sollicitudin lacinia. Vestibulum blandit nibh neque, id consequat mi vestibulum eu.</p>'); });
    }
var $itemsHolder = $('ul.thumbnails');
var $itemsClone = $itemsHolder.clone(); 
var $filterClass = "";
$('ul.filter li').click(function(e) {
e.preventDefault();
$filterClass = $(this).attr('data-value');
    if($filterClass == 'all'){ var $filters = $itemsClone.find('li'); }
    else { var $filters = $itemsClone.find('li[data-type='+ $filterClass +']'); }
    $itemsHolder.quicksand(
      $filters,
      { duration: 1000 },
      gallery
      );
});
$(document).ready(gallery);

and my html:

<!-- Begin Portfolio -->
<section id="section2">

    <div class="container portfolio">

        <!-- Page Title -->
        <div class="row page-title">
            <div class="col-lg-12">
                <h3>Portfolio</h3>
                <hr>
                <p>We also create some other stuff.</p>
            </div>
        </div>

        <!-- Portfolio Filter -->
        <div class="container text-center">
          <ul id="filterOptions" class="filter nav nav-pills center-pills">
            <li class="active"><a href="#" class="all">all</a></li>
            <li><a href="#" class="print">print</a></li>
            <li><a href="#" class="web">web</a></li>
            <li><a href="#" class="branding">branding</a></li>
            <li><a href="#" class="apps">apps</a></li>
            <li><a href="#" class="graphic design">graphic design</a></li>
            <li><a href="#" class="illustation">illustration</a></li>
          </ul>
        </div>

        <!-- Portfolio Items -->
        <div class="row">
          <ul class="ourHolder no-padding">
            <li class="item col-lg-4 no-padding" data-id="id-1" data-type="branding">
                <a href="javascript:void(0);" id="branding1">
                    <img src="img/projects/thumbs/branding1.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Beach Me</h4>
                        <em>Branding</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-2" data-type="web">
                <a href="javascript:void(0);" id="web1">
                    <img src="img/projects/thumbs/web1.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Chris Harbour</h4>
                        <em>Web Design</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-3" data-type="print">
                <a href="javascript:void(0);" id="print1">
                    <img src="img/projects/thumbs/print1.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Bildende</h4>
                        <em>Print</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-4" data-type="branding">
                <a href="javascript:void(0);" id="branding2">
                    <img src="img/projects/thumbs/branding2.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>SK Invitational</h4>
                        <em>Branding</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-5" data-type="print">
                <a href="javascript:void(0);" id="print2">
                    <img src="img/projects/thumbs/print2.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Magz Killa</h4>
                        <em>Print</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-6" data-type="branding">
                <a href="javascript:void(0);" id="branding3">
                    <img src="img/projects/thumbs/branding3.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Synex</h4>
                        <em>Branding</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-7" data-type="web">
                <a href="javascript:void(0);" id="web2">
                    <img src="img/projects/thumbs/web2.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Cow</h4>
                        <em>Web Design</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-8" data-type="print">
                <a href="javascript:void(0);" id="print3">
                    <img src="img/projects/thumbs/print3.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Tehc9btcxh</h4>
                        <em>Print</em>
                      </span>
                    </span>
                </a>
            </li>
            <li class="item col-lg-4 no-padding" data-id="id-9" data-type="web">
                <a href="javascript:void(0);" id="web3">
                    <img src="img/projects/thumbs/web3.jpg" alt="..." />
                    <span class="portfolio-hover">
                      <span>
                        <h4>Infobook</h4>
                        <em>Branding</em>
                      </span>
                    </span>
                </a>
            </li>
          </ul>
        </div>

    </div>

</section>
<!-- End Portfolio -->

I havent had any luck with this if anyone could take look.

解决方案

UPDATED: I saw that the quicksand plugin allows for a callback function.

I believe what's happening here is the elements are losing their event handlers when they get sorted due to the elements being cloned and the gallery() function only being called on (document).ready. The elements that display after being sorted are 'new' and have not got an event listener attached.

In portfolio.js, try calling the gallery() function after sorting the items via the quicksand callback argument

...

// call quicksand and assign transition parameters
$holder.quicksand($filteredData, {
  duration: 800,
  easing: 'easeInOutQuad'
}, gallery);

...

Also, I see that you have gallery as the callback in the code you posted here, but I don't think that's the code that is running. I think portfolio.js is what's running to do the sorting.

这篇关于在我对投资组合进行排序后,Bootstrap 模式停止工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
前端开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆