在html中查找并获取id属性并替换它 - jQuery

Find and get id attributes inside of html and replace it - jQuery

提问人:Denis 提问时间:8/11/2020 最后编辑:Always HelpingDenis 更新时间:8/11/2020 访问量:222

问:

我尝试在这里使用这个问题来序列化属性,但不适用于不同的情况,如何在 .main div 父级中找到整个属性

$(".send").click(function() {

  var data_array = new Array();
  $(".main").each(function() {
    var item = {};
    for (var i in $(this).attr('id')) {
      item[i] = $(this).attr(i);
    }
    data_array.push(item);

  });
  var serialized = JSON.stringify(data_array);

  $("#result").text(serialized);

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="main">
  <ul>
    <li class="dropped" data-order="0" data-id="1" data-content="blabla" id="first">first</li>
    <li class="dropped" data-order="0" data-id="2" data-content="another content" id="second">second</li>
  </ul>
<labe for="input1">Name: </labe>
<input type="text" id="input1" />
</div>

<div id="result"></div>

<button class="send">Send</button>

我正在尝试获取包括输入、标签和标签在内的所有 ID<div class="main"><li>

jQuery 序列化

评论


答:

2赞 Always Helping 8/11/2020 #1

在这种情况下,您需要使用 Descendant Selector 来获取您的类的所有内容。简单地使用 on 在您的情况下是行不通的。data-attributes.main.main$.each

编辑:根据您想要的对话,在 .main html 类中找到 id,然后用一些新 id 替换现有 id。它现在都可以正常工作,您可以单击发送,旧 id 将存储在数组中,新 id 将应用于 HTML 元素。

演示:

$(".send").click(function() {
  var data_array = []
  $(".main").each(function(index, el) {
    //store object
    var item = {};
    //find all the li in .main
    $($(el).find('li')).each(function(ind, li) {
      item["id" + ind] = $(li).attr('id') //store old li id
      $(li).attr("id", "new-li" + ind); //li change new id
    })
    //store input id
    item['id'] = $(el).find('input').attr('id') //store old id
    $(el).find('input').attr('id', 'new-input-id') //assign input new id
    //Push old id's data to array
    alert('All id`s replaced for li and input')
    data_array.push(item);
  });
  console.log(data_array)
  var serialized = JSON.stringify(data_array);
  $("#result").text(serialized);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="main">
  <ul>
    <li class="dropped" data-order="0" data-id="1" data-content="blabla" id="first">first</li>
    <li class="dropped" data-order="0" data-id="2" data-content="another content" id="second">second</li>
  </ul>
  <labe for="input1">Name: </labe>
  <input type="text" id="input1" />
</div>

<div id="result"></div>

<button class="send">Send</button>

评论

0赞 Denis 8/11/2020
感谢您的回复。我只想获取输入、标签和标签的属性 ID<li>不仅找到 li >子项,还找到元素内部的 entier elemen。请
0赞 Denis 8/11/2020
我只是在 .main div 中添加了输入,这是我发布的第一个,但它编辑并缺少示例代码的输入
1赞 Always Helping 8/11/2020
@Denis 所以你想得到 li 的 id as 和 标签文本 afirstsecondname:
0赞 Denis 8/11/2020
我想要 .main div 内的所有 elemen 都请获取所有 ID
1赞 Always Helping 8/11/2020
@Denis 你能告诉我 .main div 元素中的所有内容是什么吗 - 写在评论中可能是id's