我想在没有input
的情况下绑定select
和jQuery
更改。
目前我在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
完成此操作?
答案 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);
});