页面加载到容器中时 UI 滑块不可见

Posted

技术标签:

【中文标题】页面加载到容器中时 UI 滑块不可见【英文标题】:UI slider isn't visible when page loads into container 【发布时间】:2020-11-24 23:44:56 【问题描述】:

我的网站页面上有一个范围滑块,由于某种原因不可见。我不知道为什么。

index.php 的主体由一个带有 4 个链接的导航栏和一个 使用id="pageContent" 分隔容器。

在我的 javascript 中,当页面加载时,它会加载另一个页面 (HomePage.php) 转入#pageContent ($(#pageContent).load('HomePage.php');)。

至于导航栏;它将点击链接的名称作为 变量,将 .php 添加到它的末尾并将其加载到 #pageContent:

$('#navContent a').on('click', function() 

    var page = $(this).attr('href'); // Get link name 

    $(#pageContent).load(page + '.php'); // Load clicked page

    return false;

);

网站的一个页面 (var page) 上有一个范围滑块。我的问题是当该页面加载 [进入#pageContent] 时滑块不显示。

我也没有收到任何浏览器控制台错误。

这是滑块的代码:

html

<div class="SliderContainer">
                    
    <input type="hidden" id="minWT" value="2.5" />
    <input type="hidden" id="maxWT" value="30" />

    <p class="wtNumber" id="showWT">2.5Ct - 30Ct</p>

    <div class="rangeContainer">
        <div id="WTrange"></div>
    </div>

</div>

JS

 $('#WTrange').slider(
        
    range: true,
    values: [2.50, 30.00],
    min: 2.50,
    max: 30.00,
    step: 0.01,
    change:

        function(event, ui) 
            
            alert('Things have changed!');
            
        ,
    slide: 

        function(event, ui) 
            
            // Prevent range thumbs from overlapping
            if ((ui.values - ui.values[1]) < 3) 

                return false;

            
        
            $('#showWT').html(ui.values[0] + 'Ct - ' + ui.values[1] + 'Ct'); // Show value above range slider
            $('#minWT').val(ui.values[0]);
            $('#maxWT').val(ui.values[1]);
            
        
        
);

当我单独运行该页面时,滑块会显示,但当我将它与我网站的其余部分一起运行时[进入#pageContent],它不会。有谁知道我做错了什么?

【问题讨论】:

【参考方案1】:

加载附加 HTML 代码后,我需要运行滑块代码。

jQuery.load() 函数有额外的可选参数——一个是“完成”。

我相应地调整了 $(...).load() 函数:

$('#navContent a').on('click', function() 
    var page = $(this).attr('href'); // Get link name
    // load the clicked page ...
    $( "#pageContent" ).load( "/" + page + ".php", function( response, status, xhr ) 
        if ( status == "success" ) 
            // do we have a slider?
            if ( $('#WTrange').length ) 
                // yes, run the slider's code ...
                $('#WTrange').slider(
                    // rest of the slider code goes here ...
                );
            
        
    );
    return false ;
);

【讨论】:

以上是关于页面加载到容器中时 UI 滑块不可见的主要内容,如果未能解决你的问题,请参考以下文章

JQuery UI滑块,仅加载Button而不加载Range并且滑块不滑动

在 slickGoTo 之后反应滑块不显示最后一项

Jquery Mobile 滑块不工作 JQM 1.3.2 和 Jquery 1.10.2

JQuery 滑块不可见但可以正常工作

使用 URL 查询字符串加载页面时 jQuery 设置 UI 滑块

无限滚动加载更多信息后,滑动滑块不起作用