javascript - 模型窗口显示相同的内容

标签 javascript jquery html css

所以我正在制作一个 dentry 网站,我正在处理的这个页面是关于 dentry 病例的。假设有三种 dentry 治疗方法,种植牙、根管治疗和拔牙。我正在开发类似的东西,如果有人点击 Dental Implants,他可以看到一个模态窗口,用于特定治疗的案例。当他单击其中一个案例时,他可以看到该案例的幻灯片。它工作得很好,但唯一的问题是当我点击 dentry 植入物或骨折病例时,我看到了相同的模态窗口内容。我从 w3school's 中找到了代码网站。有什么办法可以让多个模式窗口具有不同的内容?非常感谢。

Screenshot of the window

最佳答案

我有一个大型元素可以使用您想要的东西。我会尽量减少其他代码,以便您更好地理解。我需要将其包含在您的 Bootstrap 插件中。

1) 下面你会看到两张带有初始图片的图片,点击一些图片后: enter image description here

enter image description here

2) Html(我通过 jquery 在服务器上请求动态插入所有数据):

   <div class="row content-side-imagem">
    <div id="fourth-slide" class="carousel slide" produto1-ini="0" produto1-fim="0" produto1-seq="0" produto1-qtpagina="0">
        <div class="carousel-inner">
            <div class="item active">
                <div class="col-sm-4 fourth-slide-imagem" >
                    <a class="galeriaImagens" data-toggle="modal" data-target="#galeriaImagens" data-backdrop="false">
                       <img id="produto1-imagem1" src="" alt="" title=""   class="img-responsive center-block" >
                        <div class="carousel-caption">
                            <p id="produto1-legenda1" class="fourth-slide-legenda">
                            </p>
                            <p id="produto1-item1">
                            </p>
                        </div>
                    </a>
                </div>
                <div class="col-sm-4 fourth-slide-imagem" >
                    <a class="galeriaImagens" data-toggle="modal" data-target="#galeriaImagens" data-backdrop="false">
                       <img id="produto1-imagem2" src="" alt="" title=""   class="img-responsive center-block" >
                        <div class="carousel-caption">
                            <p id="produto1-legenda2" class="fourth-slide-legenda">
                            </p>
                            <p id="produto1-item2">
                            </p>
                        </div>
                    </a>
                </div>
                <div class="col-sm-4 fourth-slide-imagem" >
                    <a class="galeriaImagens" data-toggle="modal" data-target="#galeriaImagens" data-backdrop="false">
                        <img id="produto1-imagem3" src="" alt="" title=""   class="img-responsive center-block" >
                        <div class="carousel-caption">
                            <p id="produto1-legenda3" class="fourth-slide-legenda">
                            </p>
                            <p id="produto1-item3">
                            </p>
                        </div>
                    </a>
                </div>
            </div>
        </div>
        <div class="slides-control">
            <a title="Imagem Anterior" id="tras-produto1-slide" class="carousel-control" href="#fourth-slide" data-slide="prev">
                <i class="fa fa-angle-left"></i>
            </a>
            <a title="Imagem Posterior" id="frente-produto1-slide" class="direita carousel-control" href="#fourth-slide" data-slide="next">
                <i class="fa fa-angle-right"></i>
            </a>
        </div>
    </div>
</div>

<div class="modal fade" id="galeriaImagens" role="dialog">
<div class="modal-dialog modal-lg">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <div class="numSlide5">
                <p class="numSlide5Texto text-center"></p>
            </div>
        </div>
        <div class="modal-body">
            <div class="carousel slide" id="fith-slide" data-ride="carousel">
                <div class="carousel-inner">
                    <div class="item">
                        <img id="slide5-imagem1" alt="" title="" src=""  class="img-responsive center-block">
                        <div class="carousel-caption">
                            <div id="slide5-legenda1" class="fith-slide-legenda">
                            </div>
                        </div>
                    </div>
                </div>
                <div class="slides-control">
                    <a title="Imagem Anterior" id="tras-slide5-slide" class="carousel-control" href="#fith-slide" data-slide="prev">
                        <i class="fa fa-angle-left"></i>
                    </a>
                    <a title="Imagem Posterior" id="frente-slide5-slide" class="direita carousel-control" href="#fith-slide" data-slide="next">
                        <i class="fa fa-angle-right"></i>
                    </a>
                </div>
            </div>
        </div>
    </div>
</div>

3) jquery(调用第一行轮播和第二个内部模态)

      $(document).ready(function () {
        $('.galeriaImagens').click(function () {
            var descricaoLegenda = $(this).children('div.carousel-caption').children('.fourth-slide-legenda').text();
            var listaLegenda = $('#fith-slide').children('.carousel-inner').children('.item')
                .children('.carousel-caption').children('.fith-slide-legenda');
            $('#fith-slide').find('.item.active').removeClass('active');
            $.each(listaLegenda, function (index, value) {
                if (descricaoLegenda == value.innerText)
                {
                    var selecao = value;
                    $(selecao).parents('.item').addClass('active');
                }
            });
            var totalItems = $('#fith-slide .item').length;
            var currentIndex = $('#fith-slide div.active').index() + 1;
            $('.numSlide5Texto').html('' + currentIndex + '/' + totalItems + '');
            $('#fith-slide').bind('slid', function () {
                currentIndex = $('#fith-slide div.active').index() + 1;
                $('.numSlide5Texto').html('' + currentIndex + '/' + totalItems + '');
            });
        });

        // slide 1 - imagens
        var urlDestino = "";
        var idEnvio = 0;
        var nrReg = 0;
        var idProduto = 0;
        var frente = "S";
        function slide1() {
            $.ajax({
                url: urlDestino,
                type: "POST",
                data: { "id": idEnvio, "idProduto": idProduto, "nrRegistro": nrReg },
                async: true,
                dataType: "json",
                success: function (data) {
                    if (document.getElementById("fourth-slide").getAttribute("produto1-ini") == 0) {
                        if (data.lista.length == 0 || data.lista == "0") {
                            $('#fotos-imovel').hide();
                            $('.fotos-imovel-icone').hide();
                        }
                    }
                    if (data.lista.length == 0)
                        return;
                    if (data == "") {
                        return;
                    }
                    var i = data.lista.length;
                    if (i > 0) {
                        i = i - 1;
                    }
                    var item = document.getElementById("fourth-slide").getAttribute("produto1-seq");
                    if (frente == "N") {
                        var qtdPagina = document.getElementById("fourth-slide").getAttribute("produto1-qtpagina");
                        qtdPagina = parseInt(qtdPagina);
                        item = item - (3 + qtdPagina);
                    }

                    if (i == 2) {
                        item++;
                        $('#produto1-item1').html(item + " / " + data.qtd);
                        $('#produto1-legenda1').html(data.lista[0].Descricao);
                        $('#produto1-imagem1').attr("src", data.lista[0].EnderecoImagem);
                        $('#produto1-imagem1').attr("title", data.lista[0].Descricao);
                        $('#produto1-imagem1').attr("alt", data.lista[0].DescricaoAlternativa);
                        $('#produto1-imagem1').attr("width", data.lista[0].Largura);
                        $('#produto1-imagem1').attr("height", data.lista[0].Altura);
                        item++;
                        $('#produto1-item2').html(item + " / " + data.qtd);
                        $('#produto1-legenda2').html(data.lista[1].Descricao);
                        $('#produto1-imagem2').attr("src", data.lista[1].EnderecoImagem);
                        $('#produto1-imagem2').attr("title", data.lista[1].Descricao);
                        $('#produto1-imagem2').attr("alt", data.lista[1].DescricaoAlternativa);
                        $('#produto1-imagem2').attr("width", data.lista[1].Largura);
                        $('#produto1-imagem2').attr("height", data.lista[1].Altura);
                        item++;
                        $('#produto1-item3').html(item + " / " + data.qtd);
                        $('#produto1-legenda3').html(data.lista[2].Descricao);
                        $('#produto1-imagem3').attr("src", data.lista[2].EnderecoImagem);
                        $('#produto1-imagem3').attr("title", data.lista[2].Descricao);
                        $('#produto1-imagem3').attr("alt", data.lista[2].DescricaoAlternativa);
                        $('#produto1-imagem3').attr("width", data.lista[2].Largura);
                        $('#produto1-imagem3').attr("height", data.lista[2].Altura);
                        $('#produto1-imagem1').parent().show();
                        $('#produto1-imagem2').parent().show();
                        $('#produto1-imagem3').parent().show();
                        $('#fourth-slide').attr('produto1-ini', data.lista[0].IdImagem);
                        $('#fourth-slide').attr('produto1-fim', data.lista[2].IdImagem);
                        $('#fourth-slide').attr('produto1-seq', item);
                        $('#fourth-slide').attr('produto1-qtpagina', 3);
                    }
                    else if (i == 1) {
                        item++;
                        $('#produto1-item1').html(item + " / " + data.qtd);
                        $('#produto1-legenda1').html(data.lista[0].Descricao);
                        $('#produto1-nome1').text(data.lista[0].NomeclienteProduto);
                        $('#produto1-imagem1').attr("src", data.lista[0].EnderecoImagem);
                        $('#produto1-imagem1').attr("title", data.lista[0].Descricao);
                        $('#produto1-imagem1').attr("alt", data.lista[0].DescricaoAlternativa);
                        $('#produto1-imagem1').attr("width", data.lista[0].Largura);
                        $('#produto1-imagem1').attr("height", data.lista[0].Altura);
                        item++;
                        $('#produto1-item2').html(item + " / " + data.qtd);
                        $('#produto1-nome2').text(data.lista[1].NomeclienteProduto);
                        $('#produto1-imagem2').attr("src", data.lista[1].EnderecoImagem);
                        $('#produto1-imagem2').attr("title", data.lista[1].Descricao);
                        $('#produto1-imagem2').attr("alt", data.lista[1].DescricaoAlternativa);
                        $('#produto1-imagem2').attr("width", data.lista[1].Largura);
                        $('#produto1-imagem2').attr("height", data.lista[1].Altura);
                        $('#produto1-legenda2').html(data.lista[1].Descricao);
                        $('#produto1-imagem1').parent().show();
                        $('#produto1-imagem2').parent().show();
                        $('#produto1-imagem3').parent().hide();
                        $('#fourth-slide').attr('produto1-ini', data.lista[0].IdImagem);
                        $('#fourth-slide').attr('produto1-fim', data.lista[1].IdImagem);
                        $('#fourth-slide').attr('produto1-seq', item);
                        $('#fourth-slide').attr('produto1-qtpagina', 2);
                    }
                    else {
                        item++;
                        $('#produto1-item1').html(item + " / " + data.qtd);
                        $('#produto1-legenda1').html(data.lista[0].Descricao);
                        $('#produto1-nome1').text(data.lista[0].NomeclienteProduto);
                        $('#produto1-imagem1').attr("src", data.lista[0].EnderecoImagem);
                        $('#produto1-imagem1').attr("title", data.lista[0].Descricao);
                        $('#produto1-imagem1').attr("alt", data.lista[0].DescricaoAlternativa);
                        $('#produto1-imagem1').attr("width", data.lista[0].Largura);
                        $('#produto1-imagem1').attr("height", data.lista[0].Altura);
                        $('#produto1-imagem1').parent().show();
                        $('#produto1-imagem2').parent().hide();
                        $('#produto1-imagem3').parent().hide();
                        $('#fourth-slide').attr('produto1-ini', data.lista[0].IdImagem);
                        $('#fourth-slide').attr('produto1-fim', data.lista[0].IdImagem);
                        $('#fourth-slide').attr('produto1-seq', item);
                        $('#fourth-slide').attr('produto1-qtpagina', 1);
                    }
                  }
            });
        };
        if (document.getElementById("fourth-slide").getAttribute("produto1-ini") == 0) {
            frente = "S";
            idEnvio = 0;
            urlDestino = "/Produto/BuscaImagemFrente";
            nrReg = 3;
            idProduto = $('#IdProduto').val();
            slide1();
        }
        $('#frente-produto1-slide').on('click', function () {
            frente = "S";
            var idFim = document.getElementById("fourth-slide").getAttribute("produto1-fim");
            idEnvio = idFim;
            urlDestino = "/Produto/BuscaImagemFrente";
            nrReg = 3;
            idProduto = $('#IdProduto').val();
            slide1();
        });
        $('#tras-produto1-slide').on('click', function () {
            frente = "N";
            var idIni = document.getElementById("fourth-slide").getAttribute("produto1-ini");
            idEnvio = idIni;
            urlDestino = "/Produto/BuscaImagemTras";
            nrReg = 3;
            idProduto = $('#IdProduto').val();
            slide1();
        });
        $('#fourth-slide').carousel({
            interval: false
        });



        // slide 4 - imagens - galeria de imagens
        var urlDestino = "";
        var idProduto = 0;
        function slide4() {
            $.ajax({
                url: urlDestino,
                type: "POST",
                data: { "idProduto": idProduto },
                async: true,
                dataType: "json",
                success: function (data) {
                    if (data == "") {
                        return;
                    }
                    var i = data.length;
                    if (i > 0) {
                        i = i - 1;
                    }
                    var y = 0;
                    for (x = 0; x < data.length; x++) {
                        if (data[x].IdPostagemImagem == 3) {
                            y++;
                            if (y == 1) {
                                $('#slide5-legenda1').html(data[x].Descricao);
                                $('#slide5-imagem1').attr("src", data[x].EnderecoImagem);
                                $('#slide5-imagem1').attr("title", data[x].Descricao);
                                $('#slide5-imagem1').attr("alt", data[x].DescricaoAlternativa);
                            }
                            else {
                                $('#fith-slide .carousel-inner').append('<div class="item">' +
                                '<img alt="' + data[x].DescricaoAlternativa + '" title="' +
                                data[x].Descricao + '" src="' + data[x].EnderecoImagem + '" class="img-responsive center-block">' +
                                '<div class="carousel-caption"><div class="fith-slide-legenda">' +
                                data[x].Descricao + '</div></div></div>');
                            }
                        }

                    }
                }
            });
        };
        urlDestino = "/Produto/BuscaTodasImagens";
        idProduto = $('#IdProduto').val();
        slide4();
        $('#fith-slide').carousel({
            interval: false
        });

    });

4) Controller (来自 jquery 的两个调用):

        [HttpPost]
    public async Task<JsonResult> BuscaImagemFrente(int? id, int idProduto, int nrRegistro)
    {
        int qtdTot = await (from d in db.Imagem
                           join p in db.Produto on d.IdProduto equals p.IdProduto
                           where  p.IdProduto == idProduto
                                 && d.IdPostagemImagem == 3
                           select d.IdProduto).CountAsync();
        int dep = 0;
        if (id == 0)
        {
            dep = int.Parse((from d in db.Imagem
                  join p in db.Produto on d.IdProduto equals p.IdProduto
                  where  p.IdProduto == idProduto
                         && d.IdPostagemImagem == 3
                             orderby d.IdImagem
                             select d.IdImagem).FirstOrDefault().ToString());
            id = dep - 1;
        }
        if (id >= 0)
        {
            var frente = await (from d in db.Imagem
                          join p in db.Produto on d.IdProduto equals p.IdProduto
                          where d.IdImagem > id && p.IdProduto == idProduto
                                && d.IdPostagemImagem == 3
                                orderby d.IdImagem
                                select new
                          {
                              d.IdImagem,
                              d.IdProduto,
                              d.EnderecoImagem,
                              d.CorFundoLegenda,
                              d.Descricao,
                              d.IdEmpresa,
                              d.Largura,
                              d.Altura,
                              d.IdPostagemImagem,
                              d.DescricaoAlternativa,
                              d.DescricaoLegenda,
                              d.PosicaoHorizontalLegenda,
                              d.Detalhamento
                          })
                          .Take(nrRegistro).ToListAsync();
            return Json( new { lista = frente, qtd = qtdTot });
        }
        else
        {
            return Json(0);
        }
    }

            [HttpPost]
    public async Task<JsonResult> BuscaImagemTras(int? id, int idProduto, int nrRegistro)
    {
        int qtdTot = await (from d in db.Imagem
                           join p in db.Produto on d.IdProduto equals p.IdProduto
                           where   p.IdProduto == idProduto
                                 && d.IdPostagemImagem == 3
                           select d.IdProduto).CountAsync();
        if (id > 0)
        {
            var frente = await (from d in db.Imagem
                                join p in db.Produto on d.IdProduto equals p.IdProduto
                                where d.IdImagem < id && p.IdProduto == idProduto
                                && d.IdPostagemImagem == 3
                                orderby d.IdImagem descending
                                select new
                                {
                                    d.IdImagem,
                                    d.IdProduto,
                                    d.EnderecoImagem,
                                    d.CorFundoLegenda,
                                    d.Descricao,
                                    d.IdEmpresa,
                                    d.Largura,
                                    d.Altura,
                                    d.IdPostagemImagem,
                                    d.DescricaoAlternativa,
                                    d.DescricaoLegenda,
                                    d.PosicaoHorizontalLegenda,
                                    d.Detalhamento
                                })
                                  .Take(nrRegistro).OrderBy(x => x.IdImagem).ToListAsync();
            return Json(new { lista = frente, qtd = qtdTot });
        }
        else
        {
            return Json(0);
        }
    }
    public async Task<JsonResult> BuscaTodasImagens(int idProduto)
    {
        var retorno = await (from d in db.Imagem
                            join p in db.Produto on d.IdProduto equals p.IdProduto
                            where p.IdProduto == idProduto
                                    && (d.IdPostagemImagem == 3 || d.IdPostagemImagem == 9)
                            orderby d.IdPostagemImagem, d.IdImagem
                            select new
                            {
                                d.IdPostagemImagem,
                                d.EnderecoImagem,
                                d.Descricao,
                                d.DescricaoAlternativa,
                                d.DescricaoLegenda
                            })
                        .ToListAsync();
        return Json(retorno);
    }
    [HttpPost]
    public async Task<JsonResult> BuscaDadosPlanta(int idProduto)
    {
        var frente = await (from d in db.Imagem
                        join p in db.Produto on d.IdProduto equals p.IdProduto
                        join e in db.EspecificacaoProduto on p.IdProduto equals e.IdProduto
                        where  p.IdProduto == idProduto && d.IdPostagemImagem == 9 &&
                              e.IdEspecificacaoProduto == d.IdEspecificacaoProduto
                            //orderby d.IdEspecificacaoProduto
                            orderby d.IdPostagemImagem, d.IdImagem
                            select new
                        {
                            e.IdEspecificacaoProduto,
                            e.DescricaoEspecificacaoProduto,
                            e.DetalhamentoEspecificacaoProduto,
                            d.IdImagem,
                            d.IdProduto,
                            d.EnderecoImagem,
                            d.CorFundoLegenda,
                            d.Descricao,
                            d.IdEmpresa,
                            d.Largura,
                            d.Altura,
                            d.IdPostagemImagem,
                            d.DescricaoAlternativa,
                            d.DescricaoLegenda,
                            d.PosicaoHorizontalLegenda,
                            d.Detalhamento
                        }).ToListAsync();
        return Json(frente);
    }

关于javascript - 模型窗口显示相同的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40027167/

相关文章:

javascript - 获取多边形的面积

javascript - 如何使用 npm jquery 模块?

javascript - 将 javascript 响应变量传递给 spring Controller 函数

javascript - 将玩家移向鼠标方向?

javascript - 每当选择特定的 <选项> 时,就从 Greasemonkey 脚本更改页面

javascript - Extjs 3.4 - 按钮图标不显示或不居中

html - 使用 CSS 显示两列,一列具有固定宽度,另一列占用剩余空间

html - 我如何通过悬停此 ul block 之外的另一个 li 元素来更改 li 元素的 css 属性

javascript - 在 Android 中使用 JavaScript 更改 Activity

php - 通过 jQuery 使用 AJAX 发布 MySQL 结果