我正在使用Fastclick和jQuery Mobile,除了一些非本地选择之外它们都工作正常,现在需要两次点击(不是双击)来激活。
我在添加Fastclick之前将'needsclick'类添加到select的所有元素中,试图让Fastclick忽略选择:
$("div.ui-select").addClass("needsclick");
$("#searchPanel .ui-btn-inner").addClass("needsclick");
$("#searchPanel a").addClass("needsclick");
$("#searchPanel select").addClass("needsclick");
bindFastClick();
这在标记中有所期望的效果,用'needsclick'闪烁整个事物:
<div id="searchPanel">
.....
<a href="#" role="button" id="searchLocationSlct-button" aria-haspopup="true" aria-owns="searchLocationSlct-menu" data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="span" data-icon="arrow-d" data-iconpos="right" data-theme="c" data-inline="true" data-mini="true" class="ui-btn ui-mini ui-btn-inline ui-btn-icon-right needsclick ui-btn-up-c">
<span class="ui-btn-inner needsclick">
<span class="ui-btn-text">
<span class="needsclick">Location</span>
</span>
<span class="ui-icon ui-icon-arrow-d ui-icon-shadow"> </span>
</span>
</a>
<select name="searchLocationSlct" class="needsclick" id="searchLocationSlct" data-mini="true" data-inline="true" data-shadow="false" data-corners="false" data-native-menu="false" tabindex="-1">
<option value="Camber Sands"> - Camber Sands</option>
<option value="Romney Sands"> - Romney Sands</option>
<option value="Shurland Dale"> - Shurland Dale</option>
</select>
但我仍需要两次点击(不是双击)来激活选择。如果我关闭Fastclick,单击会激活非原生选择,如预期的那样。
我已经google了这个问题,但找不到任何东西。有人见过这个或有任何想法吗?
答案 0 :(得分:5)
似乎当你将class =“needsclick”添加到非原生选择时,如下所示:
<select name="searchPriceto" id="searchPriceto" data-native-menu="false" class="needsclick">
<option value="">Price to</option>
...
然后类'needsclick'出现在真实选择中(位于屏幕外,隐藏起来)和标签文本中仅用于假选择按钮:
<span class="needsclick">Price to</span>
如果您的大拇指碰巧恰好点击了文字,那么您的非原生菜单会根据需要首次出现。但是,如果你错过了文本并点击了按钮范围,或者父主播或任何其他父元素,那么没有任何反应,直到你再次尝试(原因我并不完全清楚)。
我通过在绑定Fastclick之前将'needsclick'添加到嵌套中的所有元素来修复此问题:
$("#searchPanel .ui-btn-inner").addClass("needsclick");
$("#searchPanel .ui-btn-text").addClass("needsclick");
$("#searchPanel a").addClass("needsclick");
$("#searchPanel select").addClass("needsclick");
以及原始选择标记标记中的class ='needsclick',如上所示。
在我最初的问题中,我正在咆哮着正确的树,但是我错过了heirarchy中的一个元素(#searchPanel .ui-btn-text),这似乎阻止了修复工作。< / p>
我不禁觉得有一种比这更好的方式,因为它感觉有点笨拙,但我想我会与遇到同样问题的人分享。
如果可以使用jquery选择器将Fastclick仅应用于已识别的元素,那就太好了。)