【问题标题】:Jquery mobile and Jquery Jplayer conflictJquery mobile 和 Jquery Jplayer 冲突
【发布时间】:2012-06-25 15:11:29
【问题描述】:

我遇到了 Jquery Mobile 和 Jquery Jplayer 相互冲突的问题。我面临的问题是,当您将 Jquery Jplayer 包含到 Jquery 移动网站中并单击按钮开始收听音频时,它会更改按钮 html 并更改网站的外观,因为 Jquery 移动不会只需更改html,它会添加以下代码。

<span class="ui-btn-inner ui-btn-corner-all">
<span class="ui-btn-text">Continue</span>
</span>

每次我尝试通过包含以下脚本来覆盖它时:

$(this).html('继续');

它只是不起作用。知道在这种情况下该怎么办吗?

【问题讨论】:

  • 从您的容器中排除 jquery mobile 特定属性,这可能有效(在这种情况下可能是 data-role='button' 属性)
  • 但是这样做会带走整个 Jquery mobile 插入的样式,让它看起来不再像一个按钮。
  • 那些你讨厌的跨度是 jquery 移动样式...
  • 我并不讨厌它们,我想要理解或实现的只是在我更改文本时自动包含这些跨度,或者在 Jplayer 更改这些按钮的文本时更准确地包含这些跨度。就是这样。

标签: jquery css jquery-mobile jplayer document-ready


【解决方案1】:

如果您下载了带有主题的 JQM,那么 JQM 将覆盖您的样式和任何插件样式中的基本元素。

有一个仅适用于结构的 JQM css 的下载: http://code.jquery.com/mobile/1.1.0/jquery.mobile.structure-1.1.0.css

这里有几个选项:

1) 如果样式与盒装主题不同,请进入您的 CSS 并执行 JQM 覆盖以实现一致的样式。

2) 创建您自己的 JQM 主题。

3) 询问您是否真的需要使用 JQM 框架。很多时候我从 JQM 开始,只是为了用微型 javascript/jQuery 解决方案替换大部分功能。如果您发现自己剥离了 JQM 功能并用其他东西替换它,那么您应该质疑使用 JQM 是否是最好的方法。

【讨论】:

    【解决方案2】:

    要更新 jQuery Mobile UI 元素,您必须在修改源元素后对项目调用 .refresh()(仅适用于表单元素,不适用于链接按钮)。

    $(this).html('Continue').button('refresh');
    

    或者 Change button text jquery mobile

    $("#consumed .ui-btn-text").text("标记新");

    如果你的元素是一个按钮:

    $(this).closest(".ui-btn").find(".ui-btn-text").text("Continue");
    

    如果是链接:

    $(this).find(".ui-btn-text").text("Continue");
    

    【讨论】:

    • 这个解决方案给了我以下错误“未捕获的异常:在初始化之前无法调用按钮上的方法;试图调用方法‘刷新’”
    • 我已经更新了答案。看看有没有帮助。另外,请在问题上发布相关代码并进行编辑。
    • 这个解决方案效果很好。这只是找到正确的跨度然后更改它的文本的问题。谢谢楼主!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多