Javascript jQuery使用自定义选择()自动完成:自定义HTML中的超链接

Javascript jQuery使用自定义选择()自动完成:自定义HTML中的超链接,javascript,jquery,jquery-autocomplete,Javascript,Jquery,Jquery Autocomplete,我有一个jQuery自动完成设置,对此我有一些特殊要求 这是“用户配置文件”的自动完成,其中每个自动完成条目由_renderItem呈现,如下所示: 用户名:_firstname_lastname_ 电话号码:\可点击\电话号码\ 这部分很好用 选择后,立即导航到其他页面。我使用自定义选择实现了这一点,该选择使用window.replace转到其他页面(此人的个人资料) 这也很好用 最后,“\u clickable\u phone\u number\u”链接应该调用另一个java

我有一个jQuery自动完成设置,对此我有一些特殊要求

  • 这是“用户配置文件”的自动完成,其中每个自动完成条目由_renderItem呈现,如下所示:

用户名:_firstname_lastname_


电话号码:\可点击\电话号码\


这部分很好用

  • 选择后,立即导航到其他页面。我使用自定义选择实现了这一点,该选择使用window.replace转到其他页面(此人的个人资料)
这也很好用

  • 最后,“\u clickable\u phone\u number\u”链接应该调用另一个javascript片段。或者一个简单的超链接
最后一部分是我遇到的问题。因为我在选择后立即导航到另一个页面,所以我不知道如何“阻止”此操作

我可以将.live添加到_clickable_phone_number_并运行一些JS,但我无法停止导航到个人资料页面

我希望我明白了。如果没有,我可以进一步解释

有谁能帮助我实现这一目标吗?基本上,我如何从自定义呈现的HTML中创建超链接,尽管有一个可导航到不同页面的自定义select()

编辑:由于代码片段可能会清楚地说明这一点,我的意思如下:

我的jQuery自动完成有一个select,如下所示:

$('#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>

姓
12345
我将现场活动设置为:

$('.phone').live(“单击”,函数(){callPhone($(this.html());返回false;}

您是否尝试使用

你必须稍微修改一下代码,在开放式活动中连接电话链接,而不是使用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事件在一直冒泡到文档之前不会被激发,因此您无法停止任何操作


我没有测试过这个,但它应该可以工作。

您遇到问题的代码片段将非常有用。为什么不检查事件源元素,看看事件是否来自电话号码块?您是说$(这个)?如果是,在自动完成的select()中,$(这个)指的是输入元素。除非我误解了你的观点。非常感谢你的回答Patricia。简洁明了,效果很好。是的,我刚从别处读到live不是一个好主意,因为我无法阻止任何事情。但我没有意识到我可以使用open()钩子。我非常喜欢:-)。live()不是一个好主意,原因很多。在可能的情况下尽量避免。