Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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 为什么我的event.target数据不能在chrome中工作?_Javascript_Jquery_Google Chrome - Fatal编程技术网

Javascript 为什么我的event.target数据不能在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

我有一个删除表单中一个字段的功能,该字段在Firefox中可用,但在Chrome中不可用

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);