2013-05-16 15 views
3

我有這兩個函數,我想應用於相同的點擊(我確實有他們都在點擊函數內具有相同的結果...圖像切換工作,每次除了節目。/隱藏切換( 「optionToggle」)只適用於第一次提前點擊jquery中的兩個函數

function imageToggle() { 
    var img = $('.choices').find('.btn').children().children('img'); 
    img.toggle(function() {img.attr("src","images/misc/dotr-add.png");}, 
    function() {img.attr("src","images/misc/dotr-minus.png");} 
    ); 
} 


function optionToggle() { 
    var option = $('.choices').find('.btn').closest('.dishActions').children('.option'); 
    option.toggle(); 
} 
$('.btn').click(function() { 
    optionToggle(); 
    imageToggle(); 
}); 

這裏既有做工精細seperately

由於是代碼 -

<div class="dishActions"> 
    <!-- DISH CHOICE --> 
    <div class="choices"> 
     <div class="btn"> 
      <a href="#"> 
      <img src="images/misc/dotr-add.png" height="40" width="40" alt="button up" border="0" /> 
     </div> 
     <div class="choicesTxt">Choices </div> 
    </div> 
    <!-- DISH OPTIONS --> 
    <div class="option"> 
+9

怎麼樣用這個的jsfiddle? –

+1

我看不到問題 –

+0

一個小提琴,演示,或至少你使用的HTML將是非常有用的在這裏。 – Duffmaster33

回答

2
$('.btn').on('click', function() { 
    var state = $(this).data('state'), 
     image = state ? 'dotr-add' : 'dotr-minus'; 
    $(this).data('state', !state) 
      .find('img') 
      .prop('src', 'images/misc/' + image + '.png'); 
}); 

編輯:

我不明白你爲什麼會想這樣,但功能:

function imageToggle(state, elem) { 
    var image = state ? 'dotr-add' : 'dotr-minus'; 

    $(elem).find('img').prop('src', 'images/misc/' + image + '.png'); 
} 

function optionToggle(state, elem) { 
    $(elem).closest('.dishActions').children('.option').toggle(!state); 
} 

$('.btn').on('click', function() { 
    var state = $(this).data('state'); 
    imageToggle(state, this); 
    optionToggle(state, this); 
    $(this).data('state', !state) 
}); 
+0

真棒!非常感謝您的款待。現在試着弄清楚你做了什麼! ;) – user2390648

+0

它在每個元素的data()中存儲true或false,就像一個on/off開關來跟蹤當前狀態,並在下次點擊時進行相反操作! – adeneo

+0

如果要這個作爲一個獨立的功能,雖然....即時嘗試創建正如我最初所說,所以我會替代(這)。 function openOption(){... – user2390648