【问题标题】:Jquery Uniform Update doesn't workJquery统一更新不起作用
【发布时间】:2011-12-13 15:55:23
【问题描述】:

我在我正在进行的一个项目中使用 jquery 制服。由于这是管理面板,我真的没有选择显示。我会解释我的问题

我想要做的很简单。我正在使用 ajax 向页面添加一些表单元素(如选择、复选框、文本输入)。

除了重新设置那些动态添加的表单元素的样式之外,每件事都有效。

function step2 () {
    $.post( siteUrl + "includes/ajax/members/add-subscription.php?do=step2", $("#selectedSubscribers").serialize(), function( data ) { 
        $('.step2_content').html(data);
        $.uniform.update(); 
    });
 }

有人遇到过类似的问题吗?甚至我的 onClick、onChange 函数都可以正常工作(动态添加的表单元素),只是 $.uniform.update(); 似乎不起作用。

我认为处理数据可能需要更长的时间,所以 $.uniform.update();在处理数据之前调用,所以我尝试了$.ajaxasync: false,但没有成功。

如果有人遇到过此类问题或知道解决方案的人可以帮助我解决此问题,我会很高兴。

提前谢谢你。

【问题讨论】:

    标签: jquery ajax uniform


    【解决方案1】:

    第一次调用$.uniform() 时,它会将所有指定元素收集到受影响元素的内部数组中。当您调用 $.uniform.update() 时,它只会重新设置已收集的元素的样式。

    要添加其他元素,您可能需要再次调用$.uniform(),传递一个选择器,仅标识那些新的、动态添加的元素。

    【讨论】:

    • 不知道为什么,但这有效 $("select, input:checkbox, input:radio, input:file").uniform(); $.uniform.update();没有 .update() 仍然不起作用,我不明白为什么在向制服添加元素后必须使用 .update() 。
    【解决方案2】:

    for load() 如果解决问题

    $('#dialog').load(url + ' #forload', function() {$('#dialog').find('select').uniform(), $('#dialog').find('input:checkbox').uniform()})
    

    【讨论】:

    • 谢谢——我在使用 .load() 后无法统一设置选择元素的样式,这完全为我解决了问题。
    【解决方案3】:

    另一种解决方案可能是这样的

    setTimeout("$('.uniform_element').uniform();",200);
    

    可能需要 200 或更高的数字。

    【讨论】:

    • 这个解决方案实际上是根据统一读取和relevant issue #270推荐的
    • 这个解决方案确实有效。在我的情况下,复选框在下拉列表中
    【解决方案4】:

    你试过了吗?

    $.uniform.update("#select_element_id");
    

    就我而言,问题已经解决了。

    制服的版本老了,可能会导致你的问题。

    【讨论】:

      【解决方案5】:

      试试这个:

         $('.elementClass').uniform();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多