我有这个jQuery代码。我在这里作为评论制作第一行,因为它们在我的问题中并不重要,只是为了结构。我有点击事件,点击td后我有输入字段,里面有文字。我把重点放在文本末尾。但是当我点击时,我想删除焦点,这样我就可以点击名称的中间位置,光标就在那里。当它是一个时它起作用。('点击'),但我需要多次这样做,所以一次点击只能工作一次。
$('td').on('click', function() {
//val = $(this).text();
//console.log(val);
//rowid = $(this).parents('tr').attr('id');
//realclass = $(this).attr('class');
//$("tr").filter("#" + rowid).find("td").filter("." + realclass).find("span").hide(); //hide td->span field..
//$("tr").filter("#" + rowid).find("td").filter("." + realclass).find("input").show();//..and show input field
//get focus on end of input val
SearchInput = $("tr").filter("#" + rowid).find("td").filter("." + realclass).find("input");
strLength = SearchInput.val().length;
SearchInput.focus();
SearchInput[0].setSelectionRange(strLength, strLength);
});
答案 0 :(得分:2)
问题是单击输入本身也会触发包含<td>
元素的click事件(由于事件传播或“冒泡”),这是您不希望发生的。为了防止您在处理输入上的点击事件时调用event.stopPropagation()
函数:
$('td input').on('click', function(e) {
e.stopPropagation();
});