如何在模态中动态传递图像
How to pass image dynamically in modal
我有一个动态显示产品数据的模式。
我设法通过 Jquery:
使它正常工作
$(document).on('click', '.show-modal', function() {
$('#show').modal('show');
$('#i').text($(this).data('id'));
$('#ti').text($(this).data('name'));
$('#by').text($(this).data('description'));
$('#pr').text($(this).data('price'));
// $('#im').text($(this).data('image'));
$('#image').html($(this).data('image') );
$('.modal-title').text('Show Post');
});
唯一的问题是我无法通过将#image id 传递到视图中来传递图像。它看起来像这样:
<img class="first_img" src=" " alt=""/>
如果我传入 src="",我会看到图像 URL 但没有图像显示。
模态激活按钮如下所示:
<a href="#" class="show-modal btn btn-info btn-sm" data-id="{{$product->id}}"
data-name="{{$product->name}}" data-description="{{$product->description}}" data-price="{{$product->price}}"
data-image="{{ asset('storage/'.$product->images->first()->full) }}" >
<i class="fa fa-eye"></i>
</a>
$product->id、$product->name 等所有文本数据都可以动态传递。
唯一的问题我不知道如何动态传递图像。
这里是模态的HTML:
<div class="modal fade" title="modal" id="show" tabindex="-1" role="dialog" aria-labelledby="quickview" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<button type="button" class="close btn" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<div class="modal-body">
<div class="quickview_body">
<div class="container">
<div class="row">
<div class="col-12 col-lg-5">
<div class="quickview_pro_img">
<img class="first_img" src="" id="image" alt=""/>
<img class="hover_img" src="{{ asset('storage/'.$product->images->random()->full) }}" alt="">
<!-- Product Badge -->
<div class="product_badge">
<span class="badge-new">New</span>
</div>
</div>
</div>
<div class="col-12 col-lg-7">
<div class="quickview_pro_des">
<h4 class="data"></h4>
<b id="ti"/>
<div class="top_seller_product_rating mb-15">
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
</div>
<h5 class="price">{{config('settings.currency_symbol')}} <b id="pr"/></span></h5>
{{--description--}}
<p><b id="by"/></p>
<a href="{{ route('product.show', $product->name) }}">View Full Product Details</a>
</div>
<!-- Add to Cart Form -->
<form class="cart" method="post">
<button type="submit" name="addtocart" value="5" class="cart-submit">Add to
cart</button>
<a href="" type="" value="5" class="cart-submit">Product Details</a>
<!-- Wishlist -->
<div class="modal_pro_wishlist">
<a href="wishlist.html"><i class="icofont-heart"></i></a>
</div>
<!-- Compare -->
<div class="modal_pro_compare">
<a href="compare.html"><i class="icofont-exchange"></i></a>
</div>
</form>
<!-- Share -->
<div class="share_wf mt-30">
<p>Share with friends</p>
<div class="_icon">
<a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-pinterest" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-linkedin" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-instagram" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-envelope-o" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
如何做到这一点?
我 99% 确定您传递的信息不正确。
这个值是多少:asset('storage/'.$product->images->first()->full)
很可能是文件路径。
如果是这样,而不是使用
$('#image').html($(this).data('image') );
使用
$('#image').attr("src",$(this).data('image'));
如果 asset('storage/'.$product->images->first()->full)
returns 类似于 <img src="pathToImage.jpg">
那么您的代码应该可以工作。
此外,请注意,如果您多次使用 $(this)
,请将其存储在一个变量中,以便在您调用它时可以更快地访问它。您将减少每次 jQuery 将 this
转换为 jQuery 对象的开销。
类似
$(document).on('click', '.show-modal', function() {
var t = $(this);
$('#show').modal('show');
$('#i').text(t.data('id'));
$('#ti').text(t.data('name'));
$('#by').text(t.data('description'));
$('#pr').text(t.data('price'));
$('#image').attr("src",$(this).data('image'));
$('.modal-title').text('Show Post');
});
我有一个动态显示产品数据的模式。 我设法通过 Jquery:
使它正常工作$(document).on('click', '.show-modal', function() {
$('#show').modal('show');
$('#i').text($(this).data('id'));
$('#ti').text($(this).data('name'));
$('#by').text($(this).data('description'));
$('#pr').text($(this).data('price'));
// $('#im').text($(this).data('image'));
$('#image').html($(this).data('image') );
$('.modal-title').text('Show Post');
});
唯一的问题是我无法通过将#image id 传递到视图中来传递图像。它看起来像这样:
<img class="first_img" src=" " alt=""/>
如果我传入 src="",我会看到图像 URL 但没有图像显示。
模态激活按钮如下所示:
<a href="#" class="show-modal btn btn-info btn-sm" data-id="{{$product->id}}"
data-name="{{$product->name}}" data-description="{{$product->description}}" data-price="{{$product->price}}"
data-image="{{ asset('storage/'.$product->images->first()->full) }}" >
<i class="fa fa-eye"></i>
</a>
$product->id、$product->name 等所有文本数据都可以动态传递。 唯一的问题我不知道如何动态传递图像。
这里是模态的HTML:
<div class="modal fade" title="modal" id="show" tabindex="-1" role="dialog" aria-labelledby="quickview" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered" role="document">
<div class="modal-content">
<button type="button" class="close btn" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<div class="modal-body">
<div class="quickview_body">
<div class="container">
<div class="row">
<div class="col-12 col-lg-5">
<div class="quickview_pro_img">
<img class="first_img" src="" id="image" alt=""/>
<img class="hover_img" src="{{ asset('storage/'.$product->images->random()->full) }}" alt="">
<!-- Product Badge -->
<div class="product_badge">
<span class="badge-new">New</span>
</div>
</div>
</div>
<div class="col-12 col-lg-7">
<div class="quickview_pro_des">
<h4 class="data"></h4>
<b id="ti"/>
<div class="top_seller_product_rating mb-15">
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
</div>
<h5 class="price">{{config('settings.currency_symbol')}} <b id="pr"/></span></h5>
{{--description--}}
<p><b id="by"/></p>
<a href="{{ route('product.show', $product->name) }}">View Full Product Details</a>
</div>
<!-- Add to Cart Form -->
<form class="cart" method="post">
<button type="submit" name="addtocart" value="5" class="cart-submit">Add to
cart</button>
<a href="" type="" value="5" class="cart-submit">Product Details</a>
<!-- Wishlist -->
<div class="modal_pro_wishlist">
<a href="wishlist.html"><i class="icofont-heart"></i></a>
</div>
<!-- Compare -->
<div class="modal_pro_compare">
<a href="compare.html"><i class="icofont-exchange"></i></a>
</div>
</form>
<!-- Share -->
<div class="share_wf mt-30">
<p>Share with friends</p>
<div class="_icon">
<a href="#"><i class="fa fa-facebook" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-twitter" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-pinterest" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-linkedin" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-instagram" aria-hidden="true"></i></a>
<a href="#"><i class="fa fa-envelope-o" aria-hidden="true"></i></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
如何做到这一点?
我 99% 确定您传递的信息不正确。
这个值是多少:asset('storage/'.$product->images->first()->full)
很可能是文件路径。 如果是这样,而不是使用
$('#image').html($(this).data('image') );
使用
$('#image').attr("src",$(this).data('image'));
如果 asset('storage/'.$product->images->first()->full)
returns 类似于 <img src="pathToImage.jpg">
那么您的代码应该可以工作。
此外,请注意,如果您多次使用 $(this)
,请将其存储在一个变量中,以便在您调用它时可以更快地访问它。您将减少每次 jQuery 将 this
转换为 jQuery 对象的开销。
类似
$(document).on('click', '.show-modal', function() {
var t = $(this);
$('#show').modal('show');
$('#i').text(t.data('id'));
$('#ti').text(t.data('name'));
$('#by').text(t.data('description'));
$('#pr').text(t.data('price'));
$('#image').attr("src",$(this).data('image'));
$('.modal-title').text('Show Post');
});