好的,所以我正在制作一个插件,允许在我的网站中对表进行内联编辑,到目前为止一直很好,我已经完成了大部分工作,但我似乎无法将焦点从桌面上移开。因此,如果有人完成编辑并开始编辑新行或只是点击该行,它应该保存并恢复正常。但是如果我在行上使用模糊,则没有响应,但如果我在元素上使用模糊,则当人们从一个元素交换到另一个元素时会触发
但是如果我在行上使用焦点,只要有人离开元素,即使他们点击同一行,它也会触发。在事件变量下没有任何东西告诉我它关注的是什么元素,所以我无法与当前行进行比较,看看它们是否只是在行中点击。
我正在考虑将其保存在Enter / Mouse上单击以保存按钮/开始编辑另一行,但我宁愿让它工作,因为它似乎是一种更好的方法。有人想过吗?请?
答案 0 :(得分:3)
我会通过绑定整个文档的单击处理程序,然后在其他单击事件中添加stopPropagation()调用来处理您的请求。我设置了一个小提琴演示:http://jsfiddle.net/NwftK/
<table border="1" width="200">
<tr id="myRow"><td>Hello</td><td>World</td></tr>
</table>
和jQuery:
$(function () {
$("#myRow").on('click', function (e) {
$(this).css('background-color', 'blue');
e.stopPropagation();
});
$(document).on('click', function () {
$("#myRow").css('background-color', 'red');
});
});
答案 1 :(得分:1)
问题是,即使你有嵌套元素,当你关注其中一个子元素时,focusout也会在父元素上触发。我能想到的解决方案是使用变量跟踪当前行。伪代码可能是这样的:
var row = '';
$(table_element).click(function() {
focused_row = $(this).parent();
if(row != '' && focused_row != row) {
//code to save edits, user clicked different row
}
row = focused_row;
});
答案 2 :(得分:0)
有两种情况需要检测行何时失去焦点,一方面是你在桌子内,一方是你离开桌子时。
您可以尝试这样的事情:
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Color;
import android.graphics.Typeface;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class LanguageAdapter<T> extends ArrayAdapter<T>
{
AssetManager mngr;
public LanguageAdapter(Context ctx, T [] objects)
{
super(ctx, android.R.layout.simple_spinner_item, objects);
mngr = ctx.getAssets();
}
//other constructors
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
View view = super.getView(position, convertView, parent);
//we know that simple_spinner_item has android.R.id.text1 TextView:
Typeface faceAkshar = Typeface.createFromAsset(mngr,"akshar.ttf");
TextView text = (TextView)view.findViewById(android.R.id.text1);
text.setTypeface(faceAkshar);
text.setTextSize(24);
text.setTextColor(Color.RED);//choose your color :)
return view;
}
}