我设法使用以下代码在jQuery自动完成项右侧添加了一个链接:
function onClientSelect(event, ui) {
// My handling code goes here
event.preventDefault();
}
$("#mypage input[name='client']").autocomplete({
minLength: 1,
appendTo: $(this).parent(),
source: '/filter_client/',
select: onClientSelect,
focus: function (event, ui) {
event.preventDefault();
},
}).data("ui-autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
我的服务器以以下格式返回元素标签:
<div class="ac-item-lb">My Item Label</div>
<a class="ac-item-a" href="/url_to_go_to/" target="_blank">View Detail</a>
我想做的是,当我单击“查看详细信息”时,在新选项卡中打开链接,单击任何其他区域都将像通常一样执行onClientSelect。但是,当前在链接上单击鼠标左键也会执行
onClientSelect
。打开链接的唯一方法是单击中轮或鼠标右键,然后选择“在新选项卡中打开”。我尝试在带有event.stopImmediatePropagation()的链接上附加click事件处理程序,但这似乎不起作用。有谁知道如何解决这个问题?
最佳答案
一种方法是通过定义自定义select
函数,而不对链接使用<a>
HTML:
<div class="ui-widget">
<label for="tags">Tags:</label>
<input id="tags">
</div>
JS:
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"];
$("#tags").autocomplete({
source: availableTags,
select: function (event, ui) {
var elem = $(event.originalEvent.toElement);
if (elem.hasClass('ac-item-a')) {
var url = elem.attr('data-url');
event.preventDefault();
window.open(url, '_blank ');
}
}
}).data("ui-autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append('<a>' + item.label + '<span class="ac-item-a" data-url="http://www.nba.com"> View Details</span></a>')
.appendTo(ul);
};
JSFIDDLE。
关于javascript - 使jQuery自动完成内的<a>可点击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30727084/