2011-11-23 50 views
0

我有以下功能,它可以通過id,即自行車,汽車,公共汽車和步行控制四個圖像的不透明屬性。這是我每次單擊圖像時寫入的用於更改不透明度的代碼。用於查找具有不透明屬性的元素的jQuery語法

function changebike() { 
    $('#bike').css('opacity','1.0'); 
    $('#car').css('opacity','0.5'); 
    $('#bus').css('opacity','0.5'); 
    $('#walk').css('opacity','0.5'); 
}; 

function changecar() { 
    $('#bike').css('opacity','0.5'); 
    $('#car').css('opacity','1.0'); 
    $('#bus').css('opacity','0.5'); 
    $('#walk').css('opacity','0.5'); 
}; 

function changebus() { 
    $('#bike').css('opacity','0.5'); 
    $('#car').css('opacity','0.5'); 
    $('#bus').css('opacity','1.0'); 
    $('#walk').css('opacity','0.5'); 
}; 

function changewalk() { 
    $('#bike').css('opacity','0.5'); 
    $('#car').css('opacity','0.5'); 
    $('#bus').css('opacity','0.5'); 
    $('#walk').css('opacity','1.0'); 
}; 

我需要編寫一個函數這樣

function changeItem(item) { 
    var elements = $('*').filter(function() { 
         var options=['0.5','1.0']; 
         return $.inArray($(this).css('opacity'), options) > -1; 
        }); 
    elements.css('opacity','0.5'); 
    $(item).css('opacity','1.0'); 
}; 

在HTML中,我調用函數這樣

<img src="bike.png" id="bike" onclick="changeItem('#bike')" /> 

然而,上面的代碼不起作用。請指出我的錯誤並更正代碼。 :-)感謝

回答

1

喜歡的東西,但你必須確定你沒有你的ID的

function changeItem(item) { 
    var elementIDs = ["#bike", "#car", "#bus", "#walk"]; 
    $.each(elementIDs, function(k, v){ 
     var op = 0.5; 
     if(item == v) 
      op = 1; 
     $(v).css('opacity', op) 
    }); 
}; 
+0

棒極了!非常感謝你..完美的工作。 一個問題,爲什麼當k不被使用時,我們應該在函數中傳遞(k,v)? – thandasoru

+0

因爲你得到2個參數,如果我們只定義第一個參數,它將是索引,而不是值,它是我們想要的值。除非你想做'elementIDs [k]'而不是'v',它給出了這個值。 – Niels

+0

啊,好吧。感謝您的解釋! – thandasoru

1

有使用jQuery時,通過醜「的onclick」事件調用該函數。 我沒有測試此代碼...其右出我的頭...希望工程:)

HTML

<div id="bike">bike</div> 
<div id="car">car</div> 
<div id="bus">bus</div> 
<div id="walk">walk</div> 

JS

$(document).ready(function(){ 

    $('#bike').click(changeOpacity(this)); 
    $('#car').click(changeOpacity(this)); 
    $('#bus').click(changeOpacity(this)); 
    $('#walk').click(changeOpacity(this)); 

    function changeOpacity(target){ 
     var ids = ['#bike','#car','#bus','#walk']; 
     for(var id in ids){ 
      $(id).css('opacity',.5); 
      if(ids[id] == target.attr('id')){ 
       $(id).css('opacity',1); 
      } 
     }  
    } 

}); 
+0

哦...花了太長時間:( – badfur

+0

沒問題,我使用移動瀏覽器的ontouchstart事件:-) ..但這似乎也是一種方式。 – thandasoru

相關問題