Board logo

標題: 新手的jQuery問題,當配合for使用時 [打印本頁]

作者: alai0729    時間: 2011-3-10 15:46     標題: 新手的jQuery問題,當配合for使用時

各位好,小弟我初來此地,若有什麼不對規矩的,請多多指教

我的問題是:

var c = $('img');

for (var i=0, ci;ci=c[i]; ++i){
$('img').eq(i).ready(function chk() {

這裡我需要將現在這個圖片對象做些動作
例如我試過用 :
if (this.alt!=='Error') ......
或者
if ($('img').eq(i).attr('alt')!=='Error') .......
它都沒辦法運作
後來我alert(this)
它回傳回來的是object
那請教到底要怎樣才能操作當前這個對象呢?
我需要判斷它的屬性特徵後,然後再對它的屬性與CSS修改.

})
}

還請各位前輩們幫幫我!
作者: Mesak    時間: 2011-3-11 13:54

$('img').each(function(i,obj){
    if( $(obj).attr('alt') != 'Error' ){
        $(obj).css({'width':'100px'})
    }else{
        $(obj).hide()
    }
})

作者: alai0729    時間: 2011-3-12 20:58

Mesak 發表於 2011-3-11 13:54


感謝Mesak大
我將你這一段放到READY裡面
確實是可以正確抓取到當前的對象並操作
(若不麻煩的話,可以請教你這是什麼原因嗎?)

但有件事挺奇怪....
我以為將圖片綁READY是讓圖片正確載入完畢後動作
但是跑出來的效果居然是....
我舉例一下:
一個頁面裡有A,B兩張圖,但是兩張是相同的(相同SRC)圖
結果圖片載入完成後變成A圖沒跑READY後的動作
只有B有跑READY後的動作.......超奇怪的= =....
這跟我想像不符阿= =
作者: Mesak    時間: 2011-3-14 22:07

   
$('img') // 取得 IMG TAG  
each  //跑回圈
function i,obj //I 是INDEX  OBJ 是目前物件
   $(obj).attr('alt')  取得該物件的 ALT 屬性
關於你說的 READY 後才動作,要看你的選擇器怎麼寫
作者: alai0729    時間: 2011-3-15 20:33

關於你說的 READY 後才動作,要看你的選擇器怎麼寫
Mesak 發表於 2011-3-14 22:07
for (var i=0, ci; ci=c[i]; ++i){
  $('img').eq(i).ready(function chk() {
  
    $('img').each(function(a,obj){
    
    if( $(obj).attr('alt') !== 'Error' ){
    // alert(obj);
        $(obj).attr('alt') = 'ok' 
    }else{
        $(obj).hide()
    }
  
})
})
}
感謝Mesak大回覆
我是這樣寫的....應該沒烏龍吧?
作者: Mesak    時間: 2011-3-16 10:16

本帖最後由 Mesak 於 2011-3-16 10:18 編輯

ready 不是給 IMG這個標籤用的,你可以用 load

$('img').each 已經把網頁中所有的圖片跑過了,沒必要再跑一次,這樣做重複了 n! 次
$(function(){
        $('img').each(function(a,obj){  
                if( $(obj).attr('alt') !== 'Error' ){  
                        $(obj).attr('alt','ok') 
                }else{  
                        $(obj).hide()  
                } 
        })
})

作者: alai0729    時間: 2011-3-16 16:17

ready 不是給 IMG這個標籤用的,你可以用 load

$('img').each 已經把網頁中所有的圖片跑過了,沒必要再跑 ...
Mesak 發表於 2011-3-16 10:16


噗噗....但用ready就是我的重點需求(前提)之一阿....@@
如果只是單純要全部跑過一遍我已知道怎麼弄
我就是要每個圖片本身被綁一個ready
當自己完成載入就觸發自己的ready事件,並做動作.....
用load我試過了...會有一些問題....不合用(瀏覽器問題)
作者: Mesak    時間: 2011-3-18 01:55

如果你只針對 LOAD 完畢 的話
$('img').ready(function(){  
 if( $(this).attr('alt') !== 'Error' ){  
     $(this).attr('alt') = 'ok'   
 }else{  
     $(this).hide()  
 }
})
這樣就可以了
作者: alai0729    時間: 2011-3-20 15:27

如果你只針對 LOAD 完畢 的話這樣就可以了
Mesak 發表於 2011-3-18 01:55


感謝Mesak大再指點...
不過我試過後
好像沒有作用的說@@?
作者: Mesak    時間: 2011-3-21 09:52

$('img').each(function(i,obj)(
$(obj).ready(function(){    
 if( $(this).attr('alt') !== 'Error' ){    
     $(this).attr('alt') = 'ok'     
 }else{    
     $(this).hide()    
 }  
})
})  
不太清楚你要什麻效果

可以詳細說出來嗎?




歡迎光臨 jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化 (http://jsgears.com/)