在另一个函数jquery中使用$(this)

时间:2016-07-21 11:39:01

标签: javascript jquery

https://jsfiddle.net/y5Lk5k5t/

function check() {
  $('input').each(function(i, val) {
    $(this).val() ? "" : console.log($(this).attr('placeholder') + ' cannot be empty.');
  });
}

$('button').click(function() {
  check();
})

我想创建一个函数调用checkIfEmpty,如何将它与每个函数分开?我这样做了,但它没有用。

$('input').each(function(){
        if(!$(this).val()){
            require($(this));
        }
    });

    function require(that){
        console('Please fill in ' + $(that).data('validate-msg') + '.');
    }

3 个答案:

答案 0 :(得分:0)

如果您将$(this)传递给require,则无需再次将其转换为jQuery对象,因此这应该有效:

function require(that){
    console('Please fill in ' + that.data('validate-msg') + '.');
}

编辑:这更快,更易读:

$('input').each(function() {
    var currentInput = $(this);
    if(!currentInput.val()) {
        var message = currentInput.data('validate-msg');
        require(message);
    }
});

function require (message) {
    console('Please fill in ' + message + '.');
}

答案 1 :(得分:0)

此版本有效:

    function check() {
    
        $('input').each(function () {
            if (!($(this).val())) {
                require($(this));
            }
        });
    
        function require($that) {
            console.log('Please fill in ' + $that.data('validate-msg') + '.');
        }
    }
    
    $('button').click(function () {
    
        check();
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" placeholder="name" data-validate-msg="one">
<input type="text" placeholder="email" data-validate-msg="two">

<button>submit</button>

更新的jsfilddle:https://jsfiddle.net/1kpq8asq/1/

答案 2 :(得分:0)

作为一个小注释,请避免在“通常”代码中使用“require”这样的名称。例如,如果在NodeJS环境中重用代码,它将被破坏。