javascript
  • php
  • jquery
  • ajax
  • wordpress
  • 2015-01-15 70 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

    相关问题