繁体   English   中英

带有自定义select()的jQuery Autocomplete:自定义HTML中的超链接

[英]jQuery Autocomplete with custom select(): Hyperlink in custom HTML

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

  • 这是“用户个人资料”的自动填充,其中每个自动填充条目由_renderItem呈现,如下所示:

用户名:_firstname_lastname_


电话号码:_clickable_phone_number_


这部分工作正常。

  • 选择后,立即导航到其他页面。 我已经通过使用window.replace到另一个页面(该人的个人资料)的自定义选择实现了此目的

这也很好。

  • 最后,“ _ clickable_phone_number_”链接应调用另一个javascript代码段。 或简单的超链接

最后一部分是我遇到问题的地方。 由于选择后我立即导航到另一个页面,因此我无法弄清楚如何“防止”此操作。

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

我希望我清楚。 如果没有,我可以进一步解释。

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

编辑:由于代码段可能会清楚表明,这就是我的意思:

我的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/

您将需要稍微更改代码,在打开事件中连接电话链接,而不要使用直播。

$('#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事件直到它们一直冒泡到文档之前才被触发,因此您无法停止任何操作。

我没有测试过,但是应该可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM