2016-06-08 11 views
0

Ich habe eine jQuery-Funktion, die zeigt Leuchtkasten Pop-up:Disable jQuery-Funktion auf einer bestimmten Seite

 function flatsomeQuickView(element) { 
     $(element).click(function(e){ 
      $(this).after('<div class="ux-loading dark"></div>'); 
       var product_id = $(this).attr('data-prod'); 
       var data = { action: 'ux_quickview', product: product_id}; 
       $.post(ajaxURL.ajaxurl, data, function(response) { 
       $.magnificPopup.open({ 
        removalDelay: 300, 
        items: { 
         src: '<div class="product-lightbox">'+response+'</div>', 
         type: 'inline' 
        } 
        }); 
        $('.ux-loading').remove(); 
        $('.product-lightbox .product-gallery-slider').flickity({ 
          cellAlign: "center", 
          wrapAround: true, 
          autoPlay: false, 
          prevNextButtons:true, 
          percentPosition: true, 
          imagesLoaded: true, 
          lazyLoad: 1, 
          pageDots: false, 
          rightToLeft: false 
        }); 
        setTimeout(function() { 

         // Run Variations Form Scripts 
         if ($('.product-lightbox form').hasClass('variations_form')) { 
          $('.product-lightbox form.variations_form').wc_variation_form(); 
         } 

         $(".product-lightbox form.variations_form").on("show_variation", function (event, variation) { 
          if(variation.image_src){ 
          $('.product-lightbox .product-gallery-slider .slide.first img').attr('src',variation.image_src); 
          $('.product-lightbox .product-gallery-slider .slide.first a').attr('href',variation.image_link); 
          $('.product-lightbox .product-gallery-slider').flickity('select', 0); 
          } 
         }); 

         // Create QTY Buttons 
         $('.product-lightbox').addQty(); 

        }, 600); 
       }); 

       e.preventDefault(); 
      }); // product lightbox 
     } 
    flatsomeQuickView('.quick-view'); 

, die will ich nicht auf einer Homepage (Wordpress-Website) auszuführen. Dafür habe ich eine WP Aktion in der functions.php

erstellte Datei
function quick_view_override() { 

global $myvar; 

if($myvar == 'home') { 
echo <<<EOT 
<script> 
function flatsomeQuickView(element) { 
    $(element).click(false); 
} 
</script> 
EOT; 
} 
} 

add_action('wp_footer', 'quick_view_override', 100); 

aber irgendwie .click() ist nicht für flatsomeQuickView Funktion deaktiviert.

Antwort

0

jQuerys click (eine Abkürzung für .on) nimmt keinen boolean (see docs).

Verwenden Sie $(element).off('click');, wenn Sie alle Click-Handler für dieses Element deaktiviert haben.

+0

Ich habe Code aktualisiert '$ (Element) .off ('Klick');' und mein Aufhebungscode kommt nur unter Originalfunktion, funktioniert aber immer noch nicht (Originalfunktion tritt ein). – JackTheKnife

+0

Sie müssen 'flatsomeQuickView' nicht in Ihrem Override-Code definieren, es ist in diesem Fall sinnlos, weil Sie es bereits definiert und aufgerufen haben. Sie hätten einfach '$ (element) .off ('click');' – RwwL

+0

anrufen können. Eine andere sehr einfache Methode wäre, Ihre 'if $ myvar ==' home''-Logik zu benutzen, um eine benutzerdefinierte Klasse zu erstellen auf dem 'html' oder' body' Element, dann in Ihrem ursprünglichen Code umgeben nur den ursprünglichen Aufruf zu 'flatsomeQuickView' mit' if ($ ('. homepageClass'). Länge) {'...'} ' – RwwL

0

Verstanden auf RWWL Antwort basiert arbeiten, aber der endgültige Code ist viel komplexer:

function quick_view_override() { 

global $myvar; 

if($myvar == 'home') { 
echo <<<EOT 
<script> 
function flatsomeQuickView(element) { 
    jQuery(element).off('click'); 
} 

flatsomeQuickView('.quick-view'); 

    jQuery('.woocommerce').arrive(".quick-view", function() { 
    flatsomeQuickView(jQuery(this)); 
    }); 


</script> 
EOT; 
} 
} 

add_action('wp_footer', 'quick_view_override', 100); 
Verwandte Themen