从div中的div抓取并比较自定义列表

时间:2018-03-29 21:42:44

标签: javascript jquery list

<div class="m_data_list" id="a1">
    <div class="m_data a_rcnm5" id="a_uk54q" 
        onclick="xlist(1, 20, 'rnamx', 'rcnm5', 'uk54q', '', 'uk54q', true)">Kowalski</div>
    <div class="m_data a_rcnm5" id="a_mcrgn" 
        onclick="xlist(1, 20, 'rnamx', 'rcnm5', 'mcrgn', '', 'uk54q', true)">Melman</div>
    <div class="m_data a_rcnm5" id="a_w26tp" 
        onclick="xlist(1, 20, 'rnamx', 'rcnm5', 'w26tp', '', 'uk54q', true)">Marty</div>
    <div class="clear"></div>
</div>
<div class="m_data_list" style="" id="a2">
    <div class="m_data a_n0ql8" id="a_u4tes" 
        onclick="xlist(2, 15, 'vghwa', 'n0ql8', 'u4tes', '', 'u4tes', true)">FALSE</div>
    <div class="m_data a_n0ql8" id="a_p8ixf" 
        onclick="xlist(2, 15, 'vghwa', 'n0ql8', 'p8ixf', '', 'u4tes', true)">TRUE</div>
    <div class="clear"></div>
</div>

以下是a1的代码片段,有许多类似的div,如a1。 我实际上想要在a1,a2的上下文中比较所有 xlist 。 在每个a1,a2 ..的一个xlist中,两个元素相同,如下面的(参见uk54q

<div class="m_data a_rcnm5" id="a_uk54q" 
    onclick="xlist(1, 20, 'rnamx', 'rcnm5', 'uk54q', '', 'uk54q', true)">Kowalski</div>

有很多选项,我想选择xlist中具有相同元素的选项。

我是JS的新手,研究了几个小时,到目前为止。

$.each($('div.m_data'), function(a, b) {
    console.log($(this).attr('onclick'))
});

它将所有xlists从a1提取到a15

$.each($('div.m_data'), function(a, b) {
    console.log(b.innerHTML)
})

显示所有选项。即。 (Kowalski,Melman,Marty)

我试图从xlist中删除并且无法执行此操作,并尝试了许多未能解决的问题。

1 个答案:

答案 0 :(得分:0)

如果你尚未破解这个,你可以将每个函数声明作为一个字符串,然后使用一些简单的正则表达式将参数作为一个数组。从那时起,它只是找到更有效的方法来找到它们中的重复项,如果性能是必须的,我建议改变像我提供的那样的bubblesort。

&#13;
&#13;
function containsDuplicates(arr){
  var temp = [];
  for(var i = 0; i < arr.length - 1; i++){
    for(var j = i + 1; j < arr.length; j++){
      if(arr[i] === arr[j]){
        return true;
      }
    }
  }
  
  return false;
}

var results = {};
$('div.m_data_list').each(function(i){
  var $this = $(this);
  var $thisID = $this.attr('id');
  results[$thisID] = [];
  
  $(this).children('div.m_data').each(function(j){
    var funcString = $(this).attr('onclick');
    
    var ini = funcString.indexOf("(");
    var arr = funcString.substr(
        ini+1,
        funcString.indexOf(")") - ini - 1)
        .replace(/ /g,"").split(',');

    if(containsDuplicates(arr)){
      results[$thisID].push($(this).text());
    }
    
  });
});

console.log(results);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="m_data_list" id="a1">
    <div class="m_data a_rcnm5" id="a_uk54q" 
        onclick="xlist(1, 20, 'rnamx', 'rcnm5', 'uk54q', '', 'uk54q', true)">Kowalski</div>
    <div class="m_data a_rcnm5" id="a_mcrgn" 
        onclick="xlist(1, 20, 'rnamx', 'rcnm5', 'mcrgn', '', 'uk54q', true)">Melman</div>
    <div class="m_data a_rcnm5" id="a_w26tp" 
        onclick="xlist(1, 20, 'rnamx', 'rcnm5', 'w26tp', '', 'uk54q', true)">Marty</div>
    <div class="clear"></div>
</div>
<div class="m_data_list" style="" id="a2">
    <div class="m_data a_n0ql8" id="a_u4tes" 
        onclick="xlist(2, 15, 'vghwa', 'n0ql8', 'u4tes', '', 'u4tes', true)">FALSE</div>
    <div class="m_data a_n0ql8" id="a_p8ixf" 
        onclick="xlist(2, 15, 'vghwa', 'n0ql8', 'p8ixf', '', 'u4tes', true)">TRUE</div>
    <div class="clear"></div>
</div>
&#13;
&#13;
&#13;