Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一个。(';单击';)单击后重置_Javascript_Jquery - Fatal编程技术网

Javascript 一个。(';单击';)单击后重置

Javascript 一个。(';单击';)单击后重置,javascript,jquery,Javascript,Jquery,我有这个jQuery代码。我在这里把第一行作为评论,因为它们在我的问题中并不重要,只是为了结构。我有点击事件,点击td后,我有一个文本输入字段。我在课文末尾设置焦点。但当我点击后,我想移除焦点,这样我就可以点击名称的中间位置,光标就会在那个里。当它是一个时,它就工作了。('click'),但我需要做多次,所以一次单击只工作一次 $('td').on('click', function() { //val = $(this).text(); //console.log(va

我有这个jQuery代码。我在这里把第一行作为评论,因为它们在我的问题中并不重要,只是为了结构。我有点击事件,点击td后,我有一个文本输入字段。我在课文末尾设置焦点。但当我点击后,我想移除焦点,这样我就可以点击名称的中间位置,光标就会在那个里。当它是一个时,它就工作了。('click'),但我需要做多次,所以一次单击只工作一次

$('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);
});

问题是,单击输入本身也会触发包含的
元素上的单击事件(由于事件传播或“冒泡”),这是您不希望发生的。为防止在处理输入上的单击事件时调用
事件.stopPropagation()
函数:

$('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);
});
$('td input').on('click', function(e) {
    e.stopPropagation();
});

您可以设置一个JSFIDLE来重现这一点吗?当然
$(“tr”).filter(“#”+rowid)
可以是
$(“#”+rowid)
是。我也错过了这一点。这是有效的,除非OP在第一次点击输入时也希望有这种行为,但我想情况并非如此。