2013-08-13 8 views
5

Jquery Przełączanie dwa funkcja nie działa w jQuery 1.10.1 ale praca jest na jQuery 1.8.3Jquery Przegubowe dwa funkcja nie działa w 1.10.1

HTML

<p>For example, consider the HTML:</p> 
       <div id="target"> 
        Click here 
       </div> 

Jquery

$('#target').toggle(function() { 
    alert('First handler for .toggle() called.'); 
}, function() { 
    alert('Second handler for .toggle() called.'); 
}); 

i kosztem jest here

Odpowiedz

8

Dude to nie działa w jQuery 1.10.1

Nadal istnieje inny sposób to zrobić ...

$(function() { 
    function first() { 
     //Code for first time click goes here 
     $(this).one("click", second); 
    } 
    function second() { 
     //Code for second time click goes here 
     $(this).one("click", first); 
    } 
    $("#target").one("click", first); 
}); 
5

Format ten był removed in version 1.9, więc nie można go używać - jeśli chcesz to logika może być ręcznie wprowadzone lub można skorzystać z migration plugin

włączyć wtyczkę migracji, po włączeniu biblioteki jQuery dodać

<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script> 
+0

jakakolwiek inna funkcja do użytku –

6

DEMO

DEMO jQuery 2.x (edge)

stosowanie tej clickToggle wtyczki jako toggle funkcja zostanie usunięta z wersji 1.9

(function ($) { 
    $.fn.clickToggle = function (func1, func2) { 
     var funcs = [func1, func2]; 
     this.data('toggleclicked', 0); 
     this.click(function() { 
      var data = $(this).data(); 
      var tc = data.toggleclicked; 
      $.proxy(funcs[tc], this)(); 
      data.toggleclicked = (tc + 1) % 2; 
     }); 
     return this; 
    }; 
}(jQuery)); 
$('#target').clickToggle(function() { 
    alert('First handler for .toggle() called.'); 
}, function() { 
    alert('Second handler for .toggle() called.'); 
}); 
0

Został usunięty w jQuery 1.9:

Jest to "kliknij element do uruchomienia określonych funkcji" podpis .toggle(). Nie należy jej mylić z "zmianą widoczności elementu" .toggle(), który nie jest przestarzały. Formuła jest usuwana, aby zmniejszyć zamieszanie i poprawić potencjał modułowy w bibliotece. Wtyczkę jQuery Migrate można użyć , aby przywrócić funkcjonalność.

Kompletny przewodnik aktualizacji: http://jquery.com/upgrade-guide/1.9/

7

jQuery.toggle został przestarzałe od wersji 1.8 i usuwa jakiś czas później. Możesz napisać własną implementację zamiast:

function handler1() { 
    alert("first handler for .toggle() called."); 
    $(this).one("click", handler2); 
} 
function handler2() { 
    alert("second handler for .toggle() called."); 
    $(this).one("click", handler1); 
} 
$("#target").one("click", handler1); 

Demo

0

Oto sposób ogólny, z wieloma funkcjami, aby przełączyć:

var toggleFunctions = [ 
    function() { /* do something */}, 
    function() { /* do something else */}, 
    ... 
    function() { /* do some other stuff*/} 
]; 

$("#target").on("click", function(){ 
    // returns first function from array 
    var currentFunction = toggleFunctions.shift(); 
    // executes the function 
    currentFunction(); 
    // pushes current function to the back 
    toggleFunctions [] = currentFunction; 
}); 
0

przełącznik nie działa na mnie w jQuery więc z pomocą stackoverflow moja alternatywa jest

<a href="#" id="thiclik"> Click Me To Change</a> 
 
\t \t 
 
\t \t <div id="clickevent"> 
 
\t \t </div>
i tutaj jest implementacja lub można powiedzieć, alternatywa funkcji przełączania

$('#thiclik').click(function() 
 
{ 
 
//toggle alternative 
 

 
\t function handler1() { 
 
\t \t //alert("first handler for .toggle() called."); 
 
\t \t $("#clickevent").text("Yes"); 
 
\t \t $('#thiclik').one("click", handler2); 
 
\t } 
 
\t function handler2() { 
 
\t // \t alert("second handler for .toggle() called."); 
 
\t \t $("#clickevent").text("No"); 
 
\t \t $('#thiclik').one("click", handler1); 
 
\t } 
 
\t $("#thiclik").one("click", handler1); 
 
});
pracuje dla mnie, ale z małym problemem po kliknięciu raz pierwszy kliknij mnie to nie działa, ale na drugi i trzeci raz to działa dobrze.

Powiązane problemy