我有一个jQuery自动完成设置,对此我有一些特殊要求。
- 这是"用户配置文件"的自动完成,其中每个自动完成条目由_renderItem呈现,如下所示:
用户名:_firstname_lastname_
电话号码:_clickable_Phone_number_
这部分工作正常。
- 选择后,立即导航到其他页面。我使用自定义选择实现了这一点,该选择使用window.replace转到另一个页面(此人的个人资料)
这也很好用。
- 最后,"_clickable_phone_number_"链接应该调用另一个javascript片段。或者简单的超链接
最后一部分是我遇到的问题。由于我在选择后立即导航到另一个页面,我不知道如何"阻止"此操作。
我可以向_clickable_phone_number_添加.live并运行一些JS,但我无法停止导航到配置文件页面。
我希望我是清白的。如果没有,我可以进一步解释。
有人能帮助我如何做到这一点吗?基本上,我如何从自定义呈现的HTML中超链接,尽管有一个导航到不同页面的自定义select()。
编辑:由于代码片段可能会让它变得清晰,我的意思是:
我的jQuery自动完成有一个选择,就像这样:
$('#input').autocomplete({ source: users, minLength: 3,
select: function(event, ui)
{ window.location.replace("/profile.asp?id=" + ui.item.value); }
}).data("autocomplete")._renderItem = function (ul, item) { .. }
每个自动完成呈现元素的HTML:
<div class=".ui-menu">
<div class="name">FirstName LastName</div>
<div class="phone">12345</div>
</div>
我把现场活动设置成这样:
$('.phone').live("click", function() { callPhone($(this).html()); return false; }
您是否尝试过使用http://api.jquery.com/event.stopPropagation/
你必须稍微修改一下你的代码,在公开活动中连接你的手机链接,而不是使用live。
$('#input').autocomplete({
source: users,
minLength: 3,
select: function(event, ui){
window.location.replace("/profile.asp?id=" + ui.item.value);
},
open: function(event, ui){
$('.phone').click(function(e) {
e.stopPropagation();
callPhone($(this).html());
return false;
});
}
}).data("autocomplete")._renderItem = function (ul, item) { .. }
您不能再使用.live的原因是,.live事件在一直冒泡到文档之前不会被激发,因此您无法停止任何操作。
我还没有对此进行测试,但它应该会起作用。