Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何比较和匹配来自不同元素的字符串?_Jquery - Fatal编程技术网

Jquery 如何比较和匹配来自不同元素的字符串?

Jquery 如何比较和匹配来自不同元素的字符串?,jquery,Jquery,我的HTML包含两个独立的。parentN元素,其中包含.item。来自parent1的每个项目都包含一个字符串,来自parent2的每个项目都包含相同的字符串,但顺序混淆 <div class="parent1"> <div class="item">Some Text 1</div> <div class="item">Some Other Text 123</div> <div class="item"&g

我的HTML包含两个独立的。
parentN
元素,其中包含
.item
。来自
parent1
的每个项目都包含一个字符串,来自
parent2
的每个项目都包含相同的字符串,但顺序混淆

<div class="parent1">
   <div class="item">Some Text 1</div>
   <div class="item">Some Other Text 123</div>
   <div class="item">Yet another Text 6</div>
   <div class="item">Something else</div>
   <div class="item">Blabla</div>
   ....
</div>

<div class="parent2">      
   <div class="item">
     <span class="title">Blabla</span>
     <span class="ctgr">category 1</span>
   </div>
   <div class="item">
      <span class="title">Yet another Text 6</span>
      <span class="ctgr">category 33</span>
   </div>
   <div class="item">
       <span class="title">Some Text 1</span>
       <span class="ctgr">Cat 12</span>
   </div>
   <div class="item">
       <span class="title">Some Other Text 123</span>
       <span class="ctgr">Lala 12</span>
   </div>   
   <div class="item">
       <span class="title">Something else</span>
       <span class="ctgr">Zaza</span>
   </div>
   ... 
</div>
我知道我需要从两次
.each()
迭代开始,每个父代一次,但我不知道在那之后如何继续,我需要一些想法来继续

$('.parent1 .item').each(function() {
   var p1Text = $(this).text();
});

$('.parent2 .item').each(function() {
   var p2Text = $(this).text();
});

谢谢大家!

这不需要两个循环。您可以通过循环通过
.parent2.item
元素,然后使用
filter()
查找文本匹配的
.parent1.item
元素,一次完成此操作,如下所示:

<div class="parent1">
   <div class="item" data-ctgr="Cat 12">Some Text 1</div>
   <div class="item" data-ctgr="Lala">Some Other Text 123</div>
   <div class="item" data-ctgr="category 33">Yet another Text 6</div>
   <div class="item" data-ctgr="Zaza">Something else</div>
   <div class="item" data-ctgr="category 1">Blabla</div>
   ....
</div>

<div class="parent2">      
   <div class="item">
     <span class="title">Blabla</span>
     <span class="ctgr">category 1</span>
   </div>
   <div class="item">
      <span class="title">Yet another Text 6</span>
      <span class="ctgr">category 33</span>
   </div>
   <div class="item">
       <span class="title">Some Text 1</span>
       <span class="ctgr">Cat 12</span>
   </div>
   <div class="item">
       <span class="title">Some Other Text 123</span>
       <span class="ctgr">Lala 12</span>
   </div>   
   <div class="item">
       <span class="title">Something else</span>
       <span class="ctgr">Zaza</span>
   </div>
   ... 
</div>
$('.parent2.item')。每个(函数(){
变量$item=$(此项);
var title=$item.find('.title').text().trim();
var ctgr=$item.find('.ctgr').text().trim();
$('.parent1.item').filter(函数(){
返回$(this).text().trim()==标题;
}).数据('ctgr',ctgr);
}); 
//仅用于测试:
$('.parent1.item')。单击(函数(){
console.log($(this.data('ctgr'));
});

一些文本1
其他一些文本123
还有另一个文本6
别的
布拉布拉


布拉布拉 第一类 还有另一个文本6 类别33 一些文本1 第12类 其他一些文本123 拉拉12 别的 扎扎
首先,第二个循环选择器应该是
.parent2.item.title
(仔细查看您提供给我们的HTML)。然后,我建议您初始化两个数组,一个用于
parent1
,另一个用于
parent2
,并分别填充它们,感谢您的两个
each()
。这是非常正确的,唯一需要更改的是.data,并用.attr('data-ctgr',xxxx)替换。非常感谢Rory,我接受你的回答