javascript
  • php
  • jquery
  • ajax
  • wordpress
  • 2015-01-15 58 views 1 likes 
    1

    所以我呼籲,爲了拉動和顯示特定類別的帖子下面的AJAX功能,只要相應的按鈕被按下:切換jQuery中的Ajax響應

    <script>  
    // Brochure AJAX 
    
        function term_ajax_get(termID) { 
    
         jQuery("#loading-animation").show(); 
         var ajaxurl = 'http://localhost/kskj-portal/wp-admin/admin-ajax.php'; 
    
          jQuery.ajax({ 
           type: 'POST', 
           url: ajaxurl, 
           data: {"action": "load-filter2", term: termID }, 
           success: function(response) { 
            jQuery(".brochure-post-container").append(response); 
            jQuery("#loading-animation").hide(); 
            return false; 
            } 
          }); 
         } 
    
    </script> 
    

    函數被調用時使用顯示

    <?php foreach ($products as $product): 
        // setup the product/cateogory ID 
        $product_name = $product->name; 
        $product_id= $product->term_id; 
        $product_slug = $product->slug; 
    
        ?> 
    
    
        <div class="product-container OFF" onclick="term_ajax_get(<?php echo $product->term_id; ?>)"> 
    

    有沒有一種方法,我可以切換的具體職位:以更新函數的輸入(termID)動態HTML中的onclick屬性?基本上,如果按下按鈕,則顯示其相應的帖子。如果再次按下該按鈕,則帖子被隱藏。如果按下一個按鈕,然後按下另一個按鈕,則同時顯示兩個類別的帖子,直到再次按下其中一個按鈕。

    現在每次按下按鈕時,它都會將該類別的帖子附加到頁面上。我需要在推送時將類別放到頁面上,但我不知道如何在再次按下相應按鈕時將其刪除,或者在選擇了兩個按鈕時如何添加其他類別。

    +2

    這是一個有些寬泛,所以我會有種一般這裏...爲了相同的按鈕來執行這兩個操作,您需要在執行操作之前檢查點擊處理程序中的某種情況。在你的情況是,「內容是否已經在網頁上?」通過查找某個預期的元素來檢測該元素,該元素只有在前一個按鈕單擊返回時纔會出現。如果該內容存在,請將其刪除。如果不是,請取出並插入它。 (你還可以通過檢測內容是否隱藏*並顯示/隱藏它來進一步改進,所以它只能被提取一次。) – David 2015-01-15 17:56:46

    回答

    1

    有很多解決方案。在下面的示例中,您可以使用元素的data屬性,並根據您的需要,每次通過ajax加載新數據,或切換已存在元素的可見性(以防止連接)。

    將每個ajax響應放入一個唯一元素中(在下面的示例中,每個元素都有其唯一的data-term-id屬性),以便稍後可以輕鬆檢查元素的存在。

    PHP:

    <div class="product-container OFF" data-term="<?php echo $product->term_id; ?>">blah</div> 
    

    JS腳本:

    function term_ajax_get(termID) 
    { 
        $("#loading-animation").show(); 
        $.ajax({ 
         type: 'POST', 
         url: 'http://localhost/kskj-portal/wp-admin/admin-ajax.php', 
         data: 
         { 
          action: "load-filter2", 
          term: termID 
         }, 
         success: function(response) 
         { 
          $(".brochure-post-container").append('<div data-term-id="'+termID+'">'+response+'</div>'); 
          return $("#loading-animation").hide(); 
         } 
        }); 
    } 
    
    $(".product-container").click(function() 
    { 
        var termID = $(this).data("term"); 
        if(!$("[data-term-id='" + termID + "']").length) 
        { 
         return term_ajax_get(termID); 
        } 
        //OPTION 1.: TO PREVENT UNNECESSARY CONNECTIONS, SWITCH VISIBILITY OF THE ELEMENT IF ALREADY EXIST: 
        $("[data-term-id='" + termID + "']").toggle(); 
    
        //OPTION 2.: USE IF YOU NEED TO SHOW FRESH DATA EACH TIME: 
        //$("[data-term-id='" + termID + "']").remove(); 
    }); 
    
    +0

    感謝您的迴應,我會放棄這一點! – 2015-01-16 22:36:37

    +0

    ** Christopher Lis **,讓我知道這是否適合你 – 2015-01-18 20:33:58

    +0

    這工作完美,非常感謝您的幫助,我非常感謝它! – 2015-01-19 16:01:33

    相關問題