2013-05-16 28 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