【问题标题】:Hiding a button when maximum is reached: Jquery达到最大值时隐藏按钮:Jquery
【发布时间】:2019-02-25 23:52:38
【问题描述】:

我有以下按钮,用于以 16 为增量查看更多朋友:

<button class="cancel auto-btn hide-btn" id="viewAllFriends" style="display: visible;">View All Friends</button>

它的初始显示如下:

var username = '<?php echo $username; ?>';
var num_friends = '<?php echo $num_friends; ?>';
var counter = 8;

$(document).ready(function(){

    <?php if ($num_friends > 8): ?>
    $("viewAllFriends").attr('style', 'display: visible;');

    $("#viewAllFriends").click(function(){
        counter = counter+16;

            $.ajax({

                url:'includes/handlers/ajax_load_profile_friends.php',
                type:'POST',
                data:{'username':username, 'num_friends':num_friends, 'counter':counter},

                    success: function(data) {
                        $('#data_friends').html(data);
                            }
                    });
            });
    <?php else: ?>   
        $("#viewAllFriends").attr('style', 'display: none;');
    <?php endif; ?>
});

如果用户有超过 8 个朋友,则该按钮显示,如果少于 8 个则不显示。当ajax_load_profile_friends.php 到达末尾时,我有一个隐藏标签在页面上回显。

$max = "<p id='max' hidden>$num_rows</p>";
echo "$max";

html 输出如下所示:&lt;p id="max" hidden=""&gt;43&lt;/p&gt;

在最后一次查询之前,此隐藏标记不会出现在页面上。我想要做的是,当 43 出现时(在此示例中表示没有更多朋友要加载)是从视图中删除查看更多朋友按钮。

这是我尝试过的:

var friend_count = '<?php echo $num_friends; ?>';
var max = ("max").text();

if (max = friend_count) {
    $("#viewAllFriends").remove();

} 

遗憾的是,这不起作用 - 按钮仍然存在。其他一切都很好,但最后的细节。我不太擅长 jQuery,所以我想知道 ajax 是否覆盖了这个脚本,或者我可能没有在var max 中获取数据?任何帮助、链接、示例将不胜感激。

【问题讨论】:

  • 您的代码中哪里有您的max 计数和测试(if (max = friend_count) { 等)?
  • 另外,你能澄清一下When ajax_load_profile_friends.php gets to the end, I have a hidden tag that echos on the page 的确切含义吗? max 元素如何添加到页面中?您可以编辑您的问题并显示该代码吗?
  • 它来自ajax_load_profile_friends.php,现在在最后一个查询中以$max = "&lt;input id='max' type='hidden' value='$num_rows'&gt;"; echo "$max"; 回显到页面上,页面上的 html 值显示为 43。
  • 所以它只是传递给您的 AJAX 成功处理程序的 data 的一部分?
  • 是的。发布所有代码会使事情复杂化,但它会正确评估,并且是的 get 作为成功处理程序中data 的一部分传递。它仅在最后一个查询中出现在页面上,这是它正常工作的附加指标。它还显示正确的数字。我只是想以某种方式抓住它并hide() 按钮。

标签: php jquery ajax


【解决方案1】:

我可以试试

$('#viewAllFriends').hide();

http://api.jquery.com/hide/

改为

$("#viewAllFriends").remove();

【讨论】:

  • 试过这个,但没用。结果相同 - 按钮仍然存在。
  • 我认为可能是display: visible,这是一个错误。所以我把它切换到display: block 然后display: none。但它很固执。
【解决方案2】:

解决办法可能是这样的。

首先更新ajax_load_profile_friends.php

$max = "<input id='max' type='hidden' value='".$num_rows."'>";
echo "$max";

然后在你的脚本中

var friend_count = '<?php echo $num_friends; ?>';
var max = $("#max").val();

if (max >= friend_count) {
    $("#viewAllFriends").hide();

} 

【讨论】:

  • 输入显示在页面上,值为 43,所以这工作正常,但 #viewAllFriends 仍然没有隐藏。
猜你喜欢
  • 2021-12-09
  • 2013-01-09
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
相关资源
最近更新 更多