1

使用 jQM 1.4,我正在使用自定义select小部件,[data-role='toggleselect']如下所示:

<select data-role="toggleselect">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
</select>

为此,我需要select不增强我的元素。根据我在 jQM 1.4 API 中阅读理解的内容,我应该能够使用以下内容来防止我select被主要mobile.selectmenu小部件增强:

$( document ).on( "mobileinit", function() {
    $.mobile.selectmenu.prototype.initSelector += ":not(:jqmData(role='toggleselect'))";
});

这是我的jsfiddle表明这不起作用。我的select元素还在增强中。的,这是在加载 jQuery 之后但在 jQM 之前放置的。

为了进一步实验,我将以下 initSelector 硬编码到小部件下的 jQM-1.4.js 文件中mobile.selectmenu

initSelector: "select:not(:jqmData(role='slider')):not(:jqmData(role='flipswitch')):not(:jqmData(role='toggleselect'))"

当这是硬编码时,我select不会增强,因此可以按预期工作。

以下是我的文件的副本/粘贴:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>mobile.toggleselect</title>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script>
            $( document ).on( "mobileinit", function() {
                $.mobile.selectmenu.prototype.initSelector += ":not(:jqmData(role='toggleselect'))";
            });
        </script>
        <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>
    </head>
    <body>
        <div data-role="page">
            <div data-role="header">
                <h3>mobile.toggleselect</h3>
            </div>
            <div data-role="content">
                <select data-role="toggleselect">
                    <option value="1">One</option>
                    <option value="2">Two</option>
                    <option value="3">Three</option>
                </select>
            </div>
        </div>
    </body>
</html>

同样,如果我下载文件的本地副本并对for 进行jquery.mobile-1.4.0.js硬编码,它会按预期工作。initSelectormobile.selectmenu

所以......我错过了什么?或者这是一个错误?

4

1 回答 1

2

它看起来像是 jQuery Mobile API 1.4 文档中的一个错误。

分配自定义initSelector

$.mobile.widget.initSelector = ".selector";

演示

于 2014-01-12T18:38:56.687 回答