如何在命名函数change()中获取prop('checked')

时间:2019-01-01 18:54:18

标签: javascript jquery function properties prop

好,因此我检查属性值是否为true或false。 下面的代码很好用:

var $artistip = null;

var $chkbx = $('input[name="artist"]');

$chkbx.change( function(){
var $checked = $(this).prop('checked');

if($checked) {
    $artistip = $(this).val();

}else {
    $artistip = null;

}


});

我想将所有代码转换为一个命名函数,例如:

$djchkbx.change( function() {
getCheckBoxValue($djchkbx,$djtip);});
var $djtip = null;

var $djchkbx = $('input[name="dj"]');

function getCheckBoxValue(thisckbox, $uniqueVariable){
var $checked = $djchkbx.prop('checked');
console.log($checked);

if($checked) {
    $uniqueVariable = $(this).val();
    console.log('Checked');
    console.log($uniqueVariable);
}else {
    $uniqueVariable = null;
    console.log('Un Checked');
    console.log($uniqueVariable);
}

}

问题是我一直在虚假。

原始代码就像一个魅力。 我正在创建的命名函数无法正常工作,只是返回false。

我将大量使用该代码,因为我有多个输入复选框需要检查。 因此,我真的很想创建一个与我的原始代码相同的可重用功能。

1 个答案:

答案 0 :(得分:0)

首先,清理您的代码。将所有var声明移到顶部。然后删除getCheckBoxValue的函数参数-无论如何还是至少不要以合理的方式使用它们。在change处理程序中,像这样调用命名函数:

getCheckBoxValue.call(this);

这样,命名函数中的this将与事件处理程序中的this相同。

然后,您可以在命名函数中访问复选框元素,如顶部代码段:$(this)

直接将$(this).val()null分配给$djtip-分配给函数参数没有任何意义。如果由于命名函数在不同的上下文中使用而不能直接分配给$djtip,则返回该值并在匿名事件处理函数中进行赋值。