名称作为div数据值的函数

时间:2018-11-12 11:39:27

标签: javascript jquery

我想执行一个函数,该函数的名称是div的数据属性值:

$('#dgok').click(function() {
    var fn = $(this).attr('data-fn');
    window[fn]();
});

function delimg(){
    console.log('james'); // this works     
    let src = $('.imgact');
    let afn = 'store';
    $.post('images-pro.php', {afn, src}, function(data){  // line 75
        console.dir(data);
    });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='dgok' data-fn='delimg'>OK</div>

TypeError: Illegal invocation...at delimg (images.js:75)

有帮助吗?

1 个答案:

答案 0 :(得分:2)

在不确切知道$('.imgact')是什么的情况下,很难知道它应该是什么。不过,我会猜测这是输入,所以如果我错了,请纠正我。

问题是您正在尝试发送jquery确实不想让您发送的数据。 $('.imgact')是一个元素,如果它是输入,我们可能希望它的 value 而不是元素本身。

它看起来像这样:

$('#dgok').click(function() {
    var fn = $(this).attr('data-fn');
    window[fn]();
});

function delimg(){
    console.log('james'); // this works     
    let src = $('.imgact').val();
    let afn = 'store';
    $.post('images-pro.php', {afn, src}, function(data){  // line 75
        console.dir(data);
    });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class".imgact" />
<div id='dgok' data-fn='delimg'>OK</div>