jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化's Archiver

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

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

alai0729 發表於 2011-3-12 20:58

[quote]
[size=2][color=#999999]Mesak 發表於 2011-3-11 13:54[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1755&ptid=659][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote]

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

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

Mesak 發表於 2011-3-14 22:07

[code]   
$('img') // 取得 IMG TAG  
each  //跑回圈
function i,obj //I 是INDEX  OBJ 是目前物件
   $(obj).attr('alt')  取得該物件的 ALT 屬性
[/code]關於你說的 READY 後才動作,要看你的選擇器怎麼寫

alai0729 發表於 2011-3-15 20:33

[quote]關於你說的 READY 後才動作,要看你的選擇器怎麼寫
[size=2][color=#999999]Mesak 發表於 2011-3-14 22:07[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1759&ptid=659][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote][code]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()
    }
  
})
})
}[/code]感謝Mesak大回覆
我是這樣寫的....應該沒烏龍吧?

Mesak 發表於 2011-3-16 10:16

[i=s] 本帖最後由 Mesak 於 2011-3-16 10:18 編輯 [/i]

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

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

alai0729 發表於 2011-3-16 16:17

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

$('img').each 已經把網頁中所有的圖片跑過了,沒必要再跑 ...
[size=2][color=#999999]Mesak 發表於 2011-3-16 10:16[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1765&ptid=659][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote]

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

Mesak 發表於 2011-3-18 01:55

如果你只針對 LOAD 完畢 的話[code]
$('img').ready(function(){  
if( $(this).attr('alt') !== 'Error' ){  
     $(this).attr('alt') = 'ok'   
}else{  
     $(this).hide()  
}
})
[/code]這樣就可以了

alai0729 發表於 2011-3-20 15:27

[quote]如果你只針對 LOAD 完畢 的話這樣就可以了
[size=2][color=#999999]Mesak 發表於 2011-3-18 01:55[/color] [url=http://jsgears.com/redirect.php?goto=findpost&pid=1773&ptid=659][img]http://jsgears.com/images/common/back.gif[/img][/url][/size][/quote]

感謝Mesak大再指點...
不過我試過後
好像沒有作用的說@@?

Mesak 發表於 2011-3-21 09:52

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

可以詳細說出來嗎?

頁: [1]

Powered by Discuz! Archiver  © 2001-2009 Comsenz Inc.