【问题标题】:Update visual styling of dynamically added checkbox in jQuery Mobile更新 jQuery Mobile 中动态添加的复选框的视觉样式
【发布时间】:2014-05-21 18:35:11
【问题描述】:

我目前正在“pageinit”事件期间动态添加一堆复选框,我能够成功添加和检查。通过将以下存根的实例附加到“ul”组件来添加复选框:

<li>
<div class = "new-student">
    <img class="profile-img nav-ui-thumbnail ui-mini" src="../images/prof_img.gif">
    <!-- Block A -->
    <div id="grid" class="ui-grid-a ui-mini">
        <div class="ui-block-a ui-mini">
            <div class="ui-bar ui-bar-a ui-mini">
                <h2 class="name-student">Name</h2>
                <p class="attendingtime-student">00:00</p>
            </div>
        </div>
        <!-- Block B -->
        <div class="ui-block-b">
            <div class="ui-bar ui-bar-a ui-mini">
                <h2 class="pickuptype-student">null</h2>
                <p class="pickuptime-student">00:00</p>
            </div>
        </div>
    </div>
    <form>
        <!-- Attending -->
        <fieldset class="fieldset ui-overlay-shadow" data-role="controlgroup" data-type="horizontal" class="localnav">
            <input class="attendance0-student" name="checkbox-h-2a" id="checkbox-h-2a" type="checkbox">
            <label for="checkbox-h-2a">1</label>
            <input class="attendance1-student" name="checkbox-h-2b" id="checkbox-h-2b" type="checkbox">
            <label for="checkbox-h-2b">2</label>
            <input class="attendance2-student" name="checkbox-h-2c" id="checkbox-h-2c" type="checkbox">
            <label for="checkbox-h-2c">3</label>
        </fieldset>
    </form>
</div>

但是;我无法更新复选框的视觉样式,这导致所有复选框看起来像这样:

我尝试调用“.checkboxradio.('refresh')”,但它只会导致错误(说我无法在尚未初始化的组件上调用该方法)。

请帮忙!

【问题讨论】:

    标签: javascript jquery html jquery-mobile checkbox


    【解决方案1】:

    关于这个:

    我试过调用“.checkboxradio.('refresh')”,但它只会导致 一个错误(说我不能在一个组件上调用那个方法 被初始化)。

    通常当出现这种错误时你需要这样做:

    $('#someId').checkboxradio.().checkboxradio.('refresh');
    

    第一个调用将初始化 checkboxradio 小部件,第二个调用将增强其标记。 但这不是复选框小部件的情况,要增强动态添加的复选框,您需要这样做:

    $('[type="checkbox"]').checkboxradio();  
    

    没有刷新参数。

    这是一个工作示例:http://jsfiddle.net/Gajotres/VAG6F/77/

    当然还有其他解决方案,如果您使用的是 jQuery Mobile 至 1.4 的旧版本,请阅读 this 文章(目前不推荐使用上述功能)。

    如果您正在使用 jQuery Mobile 1.4 并且计划使用未来版本,请使用以下方法:

    $('.ui-content').enhanceWithin();
    

    了解更多信息here

    还有第三个选项,而不是 pageinit 使用 pagecreate 事件。与 pageinit 一样,它只会触发一次,但与 pageinit 不同,它会在 jQuery Mobile 增强活动页面之前触发。所以此时附加的所有内容都会自动增强。

    【讨论】:

    • 感谢您的回复,Gajotres!不幸的是,您发布的所有方法似乎都无法在我的应用程序中发挥作用。 :(
    • 来吧,我给了你一个工作的例子,它应该工作。您可以添加您的 javascript,至少在您要附加新内容的部分,包括准备好的文档(如果您正在使用它)。
    • 您还在应用程序中使用页面事件吗?
    • 我正在使用页面事件,但问题是应用程序是围绕单个页面构建的,该页面使用 Ajax 打开新页面,而 Ajax 又根据数据库的内容附加组件。所以页面事件似乎只影响“index.html”。使用此功能“打开”新页面:pastebin.com/DrhLWwmF
    • 为什么会有问题?您至少可以从您的代码中创建一个 jsFiddle 示例,我会为您修复它吗?我希望你明白,如果没有你的代码,这个问题是无法回答的。
    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多