如何从js中的元素列表中获取元素,该元素具有自定义属性?

时间:2018-03-03 12:51:22

标签: javascript jquery checkbox attributes radio

我想从jQuery中的相同元素列表中获取所有具有服装value属性的元素。

我有以下HTML表单:

<label>name <input type="text" name="name" value="value"></label>
<label>value1 <input type="radio" name="name1" value="value1"></label>
<label>value2 <input type="radio" name="name1" value="value2"></label>
<label>value3 <input type="radio" name="name1" value="value3"></label>
<label>value4 <input type="checkbox" name="name2[]" value="value4"></label>
<label>value5 <input type="checkbox" name="name2[]" value="value5"></label>

我确实尝试了以下代码:

form = $('form');
form_data = {
    'name':'test value',
    'name1':'value2',
    'name2[check]':'value5',
};
$.each(form_data,function(i,v){
    input = form.find('[name="'+i+'"]');
    inputtype = input.attr('type');

    if(inputtype == 'checkbox' || inputtype == 'radio'){
        input.has('[value="'+v+'"]').prop('checked',true);
    }else{
        input.val(v);
    }
});

但是当我尝试input.has('[value="'+v+'"]')获取相同的元素属性时,我没有返回任何元素来检查该元素..! 任何解决方案..?

1 个答案:

答案 0 :(得分:0)

您可以使用filter,这会将变量input缩减为仅具有等于变量v的值

以下是摘录。

$(function() {

  var form = $('form');

  var form_data = {
    'name': 'test value',
    'name1': 'value2',
    'name2[]': 'value5',
  };

  $.each(form_data, function(i, v) {
    var input = form.find('[name="' + i + '"]');
    var inputtype = input.attr('type');

    if (inputtype == 'checkbox' || inputtype == 'radio') {
      input.filter(function() {return this.value === v;}).prop('checked', true);
    } else {
      input.val(v);
    }
  });


});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <label>name <input type="text" name="name" value="value"></label>
  <label>value1 <input type="radio" name="name1" value="value1"></label>
  <label>value2 <input type="radio" name="name1" value="value2"></label>
  <label>value3 <input type="radio" name="name1" value="value3"></label>
  <label>value4 <input type="checkbox" name="name2[]" value="value4"></label>
  <label>value5 <input type="checkbox" name="name2[]" value="value5"></label>
</form>

有关更多文档:http://api.jquery.com/filter/