Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kłopot z live i zmianą class + title
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
XP'ek
Witam serdecznie chciałem w swoim skrypcie gdzie mam listę podstron ustawić opcję aktywowania i blokowania wyświetlania. Wykorzystuje codeigniter, jQ ver 2, smarty.

Mam taki kod jQ

Kod
        
        $('.actions a.coquette24-accept').click(function(){
            var id =($(this).attr('data-item')); //#id ukrytego input, val() czyli wpisz wartość.
                  
             $("#loader").ajaxStart(
                function(){
                  $(this).css('display', 'block').fadeTo(0, 600);
                  $(".loaderBox").animate({top: "30%"}, 500);
                }
              ).ajaxComplete(
                function(){
                  $(this).css('display', 'none');
                }
              );
                  
              $.ajax({
                url:'{/literal}{$base_url}{literal}pages/active/'+id,//skrypt php przetwarzający dane
                  type: 'GET',
                  dataType: 'script',
                  success: function(response){
                   if(response == 1){
                        notify('Gratulacje', "Status został zmieniony", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/accept.png'
                        });      
                        $("#status_"+id).live('click', function(){
                            $(this).attr("title","Zablokuj").removeClass("coquette24-accept").addClass("coquette24-block");
                        });
                    }
                    else{
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                    }
                  },
                  error: function() {
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                  }
              });
          return false;                
        });
        
        $('.actions a.coquette24-block').click(function(){
            var id =($(this).attr('data-item')); //#id ukrytego input, val() czyli wpisz wartość.                                                          
            
             $("#loader").ajaxStart(
                function(){
                  $(this).css('display', 'block').fadeTo(0, 600);
                  $(".loaderBox").animate({top: "30%"}, 500);
                }
              ).ajaxComplete(
                function(){
                  $(this).css('display', 'none');
                }
              );
              
              $.ajax({
                url:'{/literal}{$base_url}{literal}pages/block/'+id, //skrypt php przetwarzający dane
                  type: 'GET',
                  dataType: 'script',
                  success: function(response){
                   if(response == "1"){
                        notify('Gratulacje', "Status został zmieniony", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/accept.png'
                        });                                                                                                                                          
                        $("#status_"+id).live("click", function(){
$(this).attr("title","Aktywuj").removeClass("coquette24-block").addClass("coquette24-accept"); });                                                          
                    }
                    else{
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                    }
                  },
                  error: function() {
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                  }
              });
              return false;        
        });


oraz tak wygląda wycinek listy
Kod
<tr class="odd">
                                            <td class="  sorting_1">1</td>
                                            <td class=" ">Strona Główna</td>
                                            <td nowrap="nowrap" class=" "><a href="../strona-glowna.html" target="_blank" title="Pogląd strony">strona-glowna.html</a></td>
                                            <td class=" ">brak</td>
                                            <td class="actions ">
                                                <a href="{$base_url}_admin/pages/edit/1" title="Edytuj" class="coquette24-pencil"></a>
                                                                                            <a id="status_1" title="Aktywuj" data-item="1" href="#" class="coquette24-accept"></a>
                                                                                            <a href="#myModal" data-page="1" role="button" data-toggle="modal" title="Usuń" class="coquette24-delete"></a>
                                            </td>
                                        </tr>


a teraz co jest nie tak a więc klikając na aktywacje bądź de aktywację następuje zmiana statusu natomiast nie zmieniają się class, title.

w chrome pokazuje mi komunikat

Kod
Uncaught TypeError: Object [object Object] has no method 'live' pages.html:447
(anonymous function) pages.html:447
jQuery.event.dispatch jquery-2.0.0.js:4618
elemData.handle jquery-2.0.0.js:4302
PrinceOfPersia
RTFM
Szymciosek
Nie wiem czy czytałeś dokumentację Jquery, ale zobacz to: http://api.jquery.com/live/
XP'ek
ok ale nawet jak mam zmienione live na click to nie ma efektu a powinien on być widoczny...
Szymciosek
Jak dla mnie to tak następowały zmiany i nie wiem gdzie się zmieniło live na click
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+
XP'ek
dokonałem takiej zmiany i działa poprawnie tylko alerty pokazały mi się w konsoli

Cytat
JQMIGRATE: Logging is active jquery-migrate-1.1.1.js:21
JQMIGRATE: jQuery.fn.live() is deprecated jquery-migrate-1.1.1.js:40
console.trace() jquery-migrate-1.1.1.js:42
migrateWarn jquery-migrate-1.1.1.js:42
JQMIGRATE: jQuery.fn.attr('selected') may use property instead of attribute jquery-migrate-1.1.1.js:40
console.trace() jquery-migrate-1.1.1.js:42
migrateWarn jquery-migrate-1.1.1.js:42
JQMIGRATE: AJAX events should be attached to document: ajaxStart jquery-migrate-1.1.1.js:40
console.trace() jquery-migrate-1.1.1.js:42
migrateWarn jquery-migrate-1.1.1.js:42
JQMIGRATE: AJAX events should be attached to document: ajaxComplete jquery-migrate-1.1.1.js:40
console.trace() jquery-migrate-1.1.1.js:42
migrateWarn jquery-migrate-1.1.1.js:42


najlepiej napisać kolego @PoP "RTFM" zamiast nakierować ...

@Szymciosek dzięki już problem rozwiązany

Kod
        
        $('a.coquette24-accept').live('click',function(){
            var id =($(this).attr('data-item')); //#id ukrytego input, val() czyli wpisz wartość.
                  
             $("#loader").ajaxStart(
                function(){
                  $(this).css('display', 'block').fadeTo(0, 600);
                  $(".loaderBox").animate({top: "30%"}, 500);
                }
              ).ajaxComplete(
                function(){
                  $(this).css('display', 'none');                                                                        
                }                                                                                                      
              );
                  
              $.ajax({
                url:'{/literal}{$base_url}{literal}pages/active/'+id,//skrypt php przetwarzający dane
                  type: 'GET',
                  dataType: 'script',
                  success: function(response){
                   if(response == 1){
                        notify('Gratulacje', "Status został zmieniony", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/accept.png'
                        });                                                
                        $("#status_"+id).attr("title","Zablokuj").removeClass("coquette24-accept").addClass("coquette24-block");                                                      
                    }
                    else{
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                    }
                  },
                  error: function() {
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                  }
              });
          return false;                
        });
        
        $('a.coquette24-block').live('click',function(){
            var id =($(this).attr('data-item')); //#id ukrytego input, val() czyli wpisz wartość.                                                          
            
             $("#loader").ajaxStart(
                function(){
                  $(this).css('display', 'block').fadeTo(0, 600);
                  $(".loaderBox").animate({top: "30%"}, 500);
                }
              ).ajaxComplete(
                function(){
                  $(this).css('display', 'none');                                                                                                                                                
                }                                                                                                      
              );
              
              $.ajax({
                url:'{/literal}{$base_url}{literal}pages/block/'+id, //skrypt php przetwarzający dane
                  type: 'GET',
                  dataType: 'script',
                  success: function(response){
                   if(response == "1"){
                        notify('Gratulacje', "Status został zmieniony", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/accept.png'
                        });              
                        $("#status_"+id).attr("title","Aktywuj").removeClass("coquette24-block").addClass("coquette24-accept");                                                                                                                                                                                                                                                                        
                    }
                    else{
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                    }
                  },
                  error: function() {
                        notify('Ostrzeżenie', "Miała miejsce nieudana próba zmiany statusu", {
                            icon: '{/literal}{$base_url}{literal}public/img/icon/coquette/64x64/warning.png'
                        });
                  }
              });
              return false;        
        });
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.