Javascript bind()选择器
我正在尝试将单击事件绑定到锚点,但找不到正确的选择器。。。bind()对选择器特别挑剔吗 以下是我的代码,它不起作用:Javascript bind()选择器,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,我正在尝试将单击事件绑定到锚点,但找不到正确的选择器。。。bind()对选择器特别挑剔吗 以下是我的代码,它不起作用: $(".ui-navbar").delegate("a.location-menu-btn", "click", function() { navigateToPage("location.html", { }); }); 下面的代码确实有效,但会使整个身体看起来像是在安卓智能手机上被点击(anachor周围丑陋的黄色框) 这是html: <div data-r
$(".ui-navbar").delegate("a.location-menu-btn", "click", function() {
navigateToPage("location.html", { });
});
下面的代码确实有效,但会使整个身体看起来像是在安卓智能手机上被点击(anachor周围丑陋的黄色框)
这是html:
<div data-role="navbar" class="ui-navbar ui-navbar-noicons" role="navigation">
<ul class="ui-grid-b">
<li class="ui-block-a">
<a href="javascript:void(0)" data-ajax="false" class="search-menu-btn ui-btn ui-btn-up-a" data-theme="a"><span class="ui-btn-inner"><span class="ui-btn-text"><span class="lang-nav-search">Search</span></span></span></a>
</li>
<li class="ui-block-b">
<a href="javascript:void(0)" data-ajax="false" class="location-menu-btn ui-btn ui-btn-up-a" data-theme="a"><span class="ui-btn-inner"><span class="ui-btn-text"><span class="lang-nav-location">Location</span></span></span></a>
</li>
<li class="ui-block-c">
<a href="javascript:void(0)" data-ajax="false" class="settings-menu-btn ui-btn ui-btn-up-a" data-theme="a"><span class="ui-btn-inner"><span class="ui-btn-text"><span class="lang-nav-settings">Settings</span></span></span></a>
</li>
</ul>
</div>
-
-
-
如果您希望在.ui导航栏中的锚元素上有一个单击事件,并且HTML是页面加载时存在的静态HTML,那么您可以使用以下方法:
$(document).ready(function() {
$(".ui-navbar a").click(function() {
navigateToPage("location.html", { });
});
});
这将使HTML中的
标记可单击。但是,那些
标记没有内容,因此没有大小,因此在您给它们一些内容之前,没有人能够单击它们
如果您的问题与此不同,请解释
如果内容是通过脚本动态添加的,则可以像下面这样使用.live():
$(document).ready(function() {
$(".ui-navbar a").live("click", function() {
navigateToPage("location.html", { });
});
});
如果您希望在.ui navbar
中的锚元素上有一个单击事件,并且HTML是页面加载时存在的静态HTML,那么您可以使用以下方法:
$(document).ready(function() {
$(".ui-navbar a").click(function() {
navigateToPage("location.html", { });
});
});
这将使HTML中的
标记可单击。但是,那些
标记没有内容,因此没有大小,因此在您给它们一些内容之前,没有人能够单击它们
如果您的问题与此不同,请解释
如果内容是通过脚本动态添加的,则可以像下面这样使用.live():
$(document).ready(function() {
$(".ui-navbar a").live("click", function() {
navigateToPage("location.html", { });
});
});
live
已弃用。改为在
上使用。live
不推荐使用。在
上使用。我自己实际上没有太多地使用委托
,但不是$(“body”)。委托(“a.location-menu-btn”,“click”…)
与$(“a.location-menu-btn”)相同。live('click')
?@nickf-Close,但不一样$(“a.location-menu-btn”).live…
将首先遍历匹配a.location-menu-btn
的所有元素的DOM,但随后不会对匹配集执行任何操作。它将只使用live
的选择器。使用委托时
,永远不会遍历DOM。单击时,它将尝试匹配选择器。如您所见,委托
比现场
更有效。有关更多信息,请看我的回答:我猜您的代码是在加载页面或jQuery之前执行的。尝试将其放入$(function(){…})中代码>没有“绑定选择器”这样的东西。选择器返回元素列表(列表可能为空)。您对列表所做的操作与用于创建列表的选择器无关。我自己实际上没有太多地使用delegate
,但不是$(“body”)。delegate(“a.location-menu-btn”,“click”…)
与$(“a.location-menu-btn”)相同。live(“click”…)
?@nickf-Close,但不同$(“a.location-menu-btn”).live…
将首先遍历匹配a.location-menu-btn
的所有元素的DOM,但随后不会对匹配集执行任何操作。它将只使用live
的选择器。使用委托时
,永远不会遍历DOM。单击时,它将尝试匹配选择器。如您所见,委托
比现场
更有效。有关更多信息,请看我的回答:我猜您的代码是在加载页面或jQuery之前执行的。尝试将其放入$(function(){…})中代码>没有“绑定选择器”这样的东西。选择器返回元素列表(列表可能为空)。您对列表所做的操作与用于创建列表的选择器无关。