當所有div名稱相同時,似乎只會嘗試更新所選div中的圖像。以單個div更新內容,所有div名稱相同
<div class="collapse">img img img img img</div>
<div class="collapse">img img img img img img img</div>
<div class="collapse">img img img </div>
<div class="collapse">img img img img img img</div>
我有在data-src標記內設置圖像的數據,並且當div展開時,它會加載圖像。但是,由於div具有相同的類名,因此在加載展開後的div中的圖像時,會加載所有摺疊div中的所有圖像。
$(function() {
$('.collapse img').attr('src', function(index, src) {
return this.getAttribute('data-src');
});
});
這是我的展開代碼裏面的代碼,它如何改變爲只加載當前選定的div中的圖像?
編輯 - 展開代碼:
$.fn.toggler = function(options) {
var o = $.extend({}, $.fn.toggler.defaults, options);
var $this = $(this);
$this.wrapInner('<a style="display:block; color: #fff; text-decoration: none;" href="#" title="Expand/Collapse" />');
if (o.initShow) {$(o.initShow).addClass('shown');}
$this.next(o.cllpsEl + ':not(.shown)').hide();
return this.each(function() {
var container;
(o.container) ? container = o.container : container = 'html';
if ($this.next('div.shown').length) { $this.closest(container).find('.shown').show().prev().find('a').addClass('open'); }
$(this).click(function() {
$(function() {
$('.collapse img').attr('src', function(index, src) {
return this.getAttribute('data-src');
});
});
$(this).find('a').toggleClass('open').end().next(o.cllpsEl)[o.method](o.speed);
return false;
});
});};
編輯2 - 如何在div得到擴大。對不起,這個網站還很新。應該有更多的信息。
這是在頁面頂部的JavaScript:
<script type="text/javascript">
$(function() {
$("span.expand").toggler({method: "toggle", speed: 0});
});
</script>
是被點擊擴大的div跨度:
<span class="expand"> </span>
跨度是建立在CSS來顯示圖像作爲背景。
編輯:找到解決方案。
我放在:
$(this).find('a').toggleClass('open').end().next(o.cllpsEl)[o.method](o.speed);
上方的顯示圖像的代碼,以便它會觸發它首先試圖加載圖像之前打開,並改變了負荷的形象代碼:
$(function() {
$this.closest(container).find('.collapse:visible img').attr('src', function(index, src) {
return this.getAttribute('data-src');
});
});
謝謝大家:P
你的div如何擴展?你怎麼知道哪個div被選中? – 2012-01-27 21:15:33
你的擴展div代碼在哪裏? – 2012-01-27 21:15:46
Pom,這與PHP有什麼關係?我冒昧地刪除標籤,這似乎純粹是客戶端JavaScript的我。 – Wrikken 2012-01-27 21:18:18