绑定输入并选择没有jQuery的更改?

时间:2014-03-05 22:34:58

标签: javascript

我想在没有input的情况下绑定selectjQuery更改。

目前我在jQuery

中有以下内容
$(':input').each(function(){
    $(this).attr('value', this.value);
});
$('select').each(function(){
    var Selected = $(this).children('option:selected');
    $(this).children('option').removeAttr('selected', false);
    Selected.attr('selected', true);
    $(this).replaceWith($(this)[0].outerHTML);
});
$(':input').bind('keyup', function() {
    $(this).attr('value', this.value);
});
$('select').change(function(){
    var Selected = $(this).children('option:selected');
    $(this).children('option').removeAttr('selected', false);
    Selected.attr('selected', true);
    $(this).replaceWith($(this)[0].outerHTML);
    $('select').unbind('change');
    $('select').change(function(){
        var Selected = $(this).children('option:selected');
        $(this).children('option').removeAttr('selected', false);
        Selected.attr('selected', true);
        $(this).replaceWith($(this)[0].outerHTML);
        $('select').unbind('change');
    });
});

如何使用jQuery完成此操作?

1 个答案:

答案 0 :(得分:2)

这是一个了解jQuery快捷方式的本机等价物的问题。所以:

$(':input') //jQuery
document.querySelectorAll('input, select, textarea, button'); //native

对于jQuery的.bind().change().on()或其他各种事件绑定方法,本机中有.addEventListener()

所以你必须把它们放在一起。抓住所有元素,遍历它们并绑定到每个元素:

var els = document.querySelectorAll('input, select, textarea, button');
[].forEach.call(els, function(el) {
    this.addEventListener('keyup', function() {
        //do something on key up
    }, false);
    if (el.tagName == 'SELECT') this.addEventListener('change', function() {
        //also do something on change for dropdowns
    }, false);
});