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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从js中的元素列表中获取元素,该元素具有自定义属性?相关的知识,希望对你有一定的参考价值。

我想从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+'"]')获取相同的元素属性时,我没有返回任何元素来检查该元素..!任何解决方案..?

答案

你可以使用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>

以上是关于如何从js中的元素列表中获取元素,该元素具有自定义属性?的主要内容,如果未能解决你的问题,请参考以下文章

从自定义适配器获取片段中的 UI 元素 ID

如何从 Erlang 中的对列表中获取元素

Python如何获取这个字典中指定列表和指定元素?

Vuejs如何给元素添加自定义属性

Appium 自动化测试:如何从 android [android.view.View] 中的自定义 UI 中获取元素或文本

根据自定义对象属性从数组列表中删除元素