Javascript 为什么我的event.target数据不能在chrome中工作?
我有一个删除表单中一个字段的功能,该字段在Firefox中可用,但在Chrome中不可用Javascript 为什么我的event.target数据不能在chrome中工作?,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我有一个删除表单中一个字段的功能,该字段在Firefox中可用,但在Chrome中不可用 function activeDelete(del) { $('[data-delete="' + del + '"]').click(function(event) { deleteField(event); }); } function deleteField(event) { if ((members - 1) >= 3) { membe
function activeDelete(del) {
$('[data-delete="' + del + '"]').click(function(event) {
deleteField(event);
});
}
function deleteField(event) {
if ((members - 1) >= 3) {
members -= 1;
var i = $(event.target).data('delete');
console.log(i)
var currentdiv = $('[data-div="' + i + '"]');
currentdiv.remove();
$("#rollWheel").val("Roll the wheel ! (" + members + " members)");
} else {
$('.errors').remove();
$('#firstCard').append('<div class="errors animated fadeOut">3 participants minimum.</div>');
}
}
activeDelete(1);
函数activeDelete(del){
$(“[data delete=“”+del+“]”)。单击(函数(事件){
删除字段(事件);
});
}
函数deleteField(事件){
如果((成员-1)>=3){
成员-=1;
var i=$(event.target).data('delete');
控制台日志(i)
var currentdiv=$('[data div=“'+i+'']”数据);
currentdiv.remove();
$(“#滚轮”).val(“滚轮!(“+成员+”成员)”);
}否则{
$('.errors').remove();
$(#firstCard')。追加('最少3名参与者');
}
}
主动删除(1);
我记录了我的I
变量,它是未定义的
(在Chrome中)。我在本地测试,也在我的网站上测试
我这里缺少什么?您应该在这里使用
currentTarget
,而不是target
,但我建议您使用$(this)
最小变化:
建议的更改:
函数activeDelete(del){
$(“[data delete=“”+del+“]”)。单击(函数(事件){
deleteField($(this));//请参见此处的参数
event.preventDefault();
});
}
函数删除字段(obj){
如果((成员-1)>=3){
成员-=1;
var i=obj.data('delete');//参见此处的getter
控制台日志(i)
var currentdiv=$('[data div=“'+i+'']”数据);
currentdiv.remove();
$(“#滚轮”).val(“滚轮!(“+成员+”成员)”);
}否则{
$('.errors').remove();
$(#firstCard')。追加('最少3名参与者');
}
}
主动删除(1);
将以下行从$(event.target)
更改为$(event.currentTarget)
。这是因为单击事件可能已在子元素上触发
根据报告:
在事件遍历时标识事件的当前目标
大教堂。它始终引用事件处理程序所使用的元素
附加到而不是event.target,它标识上的元素
事件发生的时间
或者您也可以将行更改为
$(event.target).最近(“[数据删除]”)
您的标记是什么?此事件处理程序绑定的元素是什么?调用此函数的代码在哪里?谁被调用了deleteField
可以检查$(event.target)
返回什么?做了,抓住正确的事件和目标。谢谢@JeremyRajan,目标被误导了。不知道当前目标。这个社区太棒了。
$(event.currentTarget).data('delete');
function activeDelete(del) {
$('[data-delete="' + del + '"]').click(function(event) {
deleteField($(this)); // see here the parameter
event.preventDefault();
});
}
function deleteField(obj) {
if ((members - 1) >= 3) {
members -= 1;
var i = obj.data('delete'); // see here the getter
console.log(i)
var currentdiv = $('[data-div="' + i + '"]');
currentdiv.remove();
$("#rollWheel").val("Roll the wheel ! (" + members + " members)");
} else {
$('.errors').remove();
$('#firstCard').append('<div class="errors animated fadeOut">3 participants minimum.</div>');
}
}
activeDelete(1);