问题(如您所知)是当您从文本框中聚焦时,清除图标在其单击事件被触发之前被删除。一种可能的解决方案是更改清除图标的不透明度而不是删除它,以便它仍然继续接收事件。
演示:http: //jsfiddle.net/w9RbW/10/
// Have the clear icon in there all the time
$("<span class='keypress'><i class='icon-remove-sign'></i></span>").appendTo($(".searchInput").parent());
$(".keypress").click(function(e) {
if($(this).css('opacity') == 0) return;
$(".searchInput").val("").focus();
$(this).css('opacity', '0'); // hide it after clearing the text
})
// focusout
$(".searchInput").blur(function(e) {
$(".keypress").css('opacity', '0'); // hide it on blur
})
$(".searchInput").focus(function() {
if ($(".searchInput").val() != "") {
$(".keypress").css('opacity', '1'); // show it
}
})
$(".searchInput").keyup(function() {
if($(this).val() != "") {
$(".keypress").css('opacity', '1');
} else {
$(".keypress").css('opacity', '0');
}
})