2016-04-11 119 views
0

我有這個PHP腳本來生成一個目錄的縮略圖。該目錄中的文件的數量是動態的:jQuery:如何獲得多個src值img

<? 
    if (isset ($product_imgfiles)) { 
     echo '<div class="row">'; 

     for ($i=2; $i<($num_product_imgfiles+2); $i++) { 
      echo '<div class="col-xs-4 col-md-2" style="padding-left: 7px; padding-right: 7px;"> 
        <a href="#" class="thumbnail product_imgfiles"> 
         <img src="'. $directory . $product_imgfiles[$i] .'" style="margin-bottom: 5px;"> 
         <span><i class="fa fa-times-circle"></i> hapus</span> 
        </a> 
       </div>'; 
     } 

     echo '</div>'; 
    } 
?> 

,我也有這樣的jQuery的每次點擊縮略圖時候聽的事件:

echo ' 
$(".product_imgfiles").each(function(index) { 
    $(".product_imgfiles").click(function() { 
     event.preventDefault(); 
     var img_files = $(".product_imgfiles img").attr("src"); 
     alert(img_files); 
     alert(\''.$product_token.'\'); 
     alert('.$secret_token.'); 
    }); 
}); 

'; 

jQuery的部分能夠顯示警告信息。但是,不幸的是,循環將不會停止,直到product_imgfiles的數字爲止,並且它顯示標籤的src值。

而我需要的是srcimg標籤,一旦點擊類product_imgfiles被點擊。點擊時如何獲得每個img類的每個src值?謝謝。

+2

Whoa,whoa ...你意識到你將每個'.product_imgfiles'一次附加到* all *'.product_imgfiles'的同一事件處理程序?刪除那個'.each()'! –

+2

一旦解決了問題,您將需要使用'$(this)'來引用被點擊的縮略圖... –

回答

2

刪除.each循環。

.click()固有地將它應用於每個元素,您不需要再循環它們。

echo ' 
    $(".product_imgfiles").click(function(event) { 
     event.preventDefault(); 
     var img_files = $(this).children('img').attr("src"); 
     alert(img_files); 
     alert(\''.$product_token.'\'); 
     alert('.$secret_token.'); 
    }); 
'; 

此外,您需要實際將event變量傳遞給構造函數。 正如註釋中提到的那樣,您引用當前正在點擊的對象this而不是再次使用選擇器。

此外,與產品令牌和祕密令牌混淆有點奇怪。每個.product_imgfiles對象都是一樣的。那是你要的嗎?如果是這樣,那很好!如果不是,則應將這些值作爲PHP中每個img元素的屬性(例如data-product_token='$product_token')存儲,然後在JS中使用$(this).attr('data-product_token')$(this).data('product_token')之類的內容引用它們。

+0

這隻能修復背景問題,而不是手頭的問題。 –

+0

hi bro,謝謝你的回覆。但是我得到了'img_files'的undefined值。是因爲'src'的值屬於'img'標籤,而'.product_imgfiles'類是附在''標籤上的?我試圖將'.product_imgfiles'移動到'img',但不起作用。 –