2012-11-14 152 views
6

我想要一個按鈕來執行兩個jQuery的功能。一個在第一次點擊,然後在另一個點擊。這是兩個按鈕的代碼。有沒有一種方法來組合功能?一個按鈕一個功能第一次點擊另一個第二個

<input type="button" value="View Page" onclick="ViewPage()" /> 

<script type="text/javascript"> 
function ViewPage() { 
example_animate('-=50%'); 
$("#mainContent").toggle(); 
} 
</script> 

<input type="button" value="View Menu" onclick="ViewMenu()" /> 

<script type="text/javascript"> 
function ViewMenu() { 
example_animate('+=50%'); 
$("#mainContent").toggle(); 
} 
</script> 
+0

http://stackoverflow.com/questions/3280397/how-to-find-out-second-click-on-a-button – Elijah

回答

16

嘗試這樣的事情 - DEMO

var action = 1; 

$("input").on("click", viewSomething); 

function viewSomething() { 
    if (action == 1) { 
     $("body").css("background", "honeydew"); 
     action = 2; 
    } else { 
     $("body").css("background", "beige"); 
     action = 1; 
    } 
} 

所以你的情況,將使用one方法是

function viewSomething() { 
    if (action == 1) { 
     example_animate('-=50%'); 
     action = 2; 
    } else { 
     example_animate('+=50%'); 
     action = 1; 
    } 
    $("#mainContent").toggle(); 
} 
+0

它爲我工作http://jsfiddle.net/7YATm/5/ –

+0

我做了一個簡單的插件「Show More/Show Less」插件與你的代碼,它的作品很酷。謝了哥們。 –

1

的另一種方式,都將觸發一次

$("input").one("click", viewSomething); 
function viewSomething() 
{ 
    $("body").css("background", "honeydew"); 
    $("input").one("click", function(){ // on can be used 
     $("body").css("background", "beige"); 
    }); 
} 

DEMO

更新:如果你想保持第二處理活着然後用onthis one更換one

0

你可以使用一個數組來存儲你的函數和一個帶有data的計數器來跟蹤索引。這是非常靈活的,因爲您可以添加儘可能多的功能,如果您繼續點擊,它會循環。

演示:http://jsbin.com/ehatoj/2/edit

var funcs = [ 
    function one() { alert('one'); }, 
    function two() { alert('two'); }, 
    function three() { alert('three'); } 
]; 

$('button') 
    .data('counter', 0) // begin counter at zero 
    .click(function() { 
    var counter = $(this).data('counter'); 
    funcs[ counter ](); 
    $(this).data('counter', counter < funcs.length-1 ? ++counter : 0); 
    }); 
+0

這是我現在擁有的。這個電話似乎並不正確。 \t \t \t \t <腳本類型= 「文本/ JavaScript的」> \t \t變種行動= 1; \t \t \t \t $(「mainContent」)。on(「click」,viewSomething); \t \t \t 功能\t viewSomething(){ \t \t如果(動作== 1){ \t \t example_animate( '+ = 50%'); \t \t action = 2; \t \t} else { \t \t example_animate('+ = 50%'); \t \t action = 1; \t \t \t \t} \t \t $( 「#搜索Maincontent」)切換()。 \t \t} \t \t – Altered

0

你可以在這兩個函數的類添加到您的按鈕,讓你知道該按鈕應該做的事,然後測試,如果按鈕具有此類與否。 當然,你也將需要刪除viewMenu()類,這將是這樣的jQuery中v1.8.3:

<input id="toggle-view" type="button" value="View Menu" class="view-page" /> 

$('#toggle-view').on('click', function() 
{ 
    var button = $(this); 

    if (button.hasClass('view-page') ) 
    { 
     ViewPage(); 
     button.removeClass('view-page'); 
    } 
    else 
    { 
     ViewMenu(); 
     button.addClass('view-page'); 
    } 
}); 
+0

這是我現在有。似乎通話沒有正確進行? \t \t \t \t <腳本類型= 「文本/ JavaScript的」> \t \t變種行動= 1; \t \t \t \t $(「mainContent」)。on(「click」,viewSomething); \t \t \t 功能\t viewSomething(){ \t \t如果(動作== 1){ \t \t example_animate( '+ = 50%'); \t \t action = 2; \t \t} else { \t \t example_animate('+ = 50%'); \t \t action = 1; \t \t \t \t} \t \t $( 「#搜索Maincontent」)切換()。 \t \t} \t \t – Altered

2

你也可以指定一個名稱爲HTML元素..

<input type="button" value="Click me" onclick = 'viewSomething(this)'/>   
<script> 
    function viewSomething(e){ 

     //First time click 
     if(e.name != 'Click'){ 
      e.name = "Click"; 
      <!--do whatever..--> 
     }//end if 

     //When click it again.. 
     else if(e.name == 'Click'){ 
      e.name = "Unclick"; 
      <!--do whatever--> 
     }//end else 
    }//end function 
</script> 
相關問題