Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Javascript/jquery比较单独div中div和li元素的文本_Javascript_Jquery - Fatal编程技术网

Javascript/jquery比较单独div中div和li元素的文本

Javascript/jquery比较单独div中div和li元素的文本,javascript,jquery,Javascript,Jquery,我有一个侧边栏,通过页面主要内容中单击的div元素的h3内容填充基于ul的内容。 下面是我用来尝试只显示每个标题一次的jQuery。 单击的第一个元素不会在侧栏中重复多次单击,但每隔单击一次div就会在侧栏中重复一次,如果先单击另一个div,则包括第一个div>h3。 console.log显示title打印出单击的项目,但sidebarinstry只打印出添加到ul的第一个li的文本。 如果内容与正在单击的div>h3的内容匹配,我想从ul中删除一个li。换句话说,在重复出现时从侧边栏中删除重

我有一个侧边栏,通过页面主要内容中单击的div元素的h3内容填充基于ul的内容。 下面是我用来尝试只显示每个标题一次的jQuery。 单击的第一个元素不会在侧栏中重复多次单击,但每隔单击一次div就会在侧栏中重复一次,如果先单击另一个div,则包括第一个div>h3。 console.log显示title打印出单击的项目,但sidebarinstry只打印出添加到ul的第一个li的文本。 如果内容与正在单击的div>h3的内容匹配,我想从ul中删除一个li。换句话说,在重复出现时从侧边栏中删除重复项

$(".industries").on('click', function(){
    var title = $(this).find('h3').html();
    var sidebarindustry = $('.widget-Text_Widget ul').find('.indhandle').find('.sidebar-title').html();



        ////****!!!!wont work bc they are both type object and reference different objects*****/
        var indIteminList = title !== sidebarindustry;


        $('.widget-Text_Widget').find('ul').append(indIteminList ? '<li class="indhandle labelsidebar"><span class="sidebar-title">'+ title +'</span> <span class="sidebar-item-remove">x</span></li>') : '';

你可以在你的侧边栏中循环已经存在的值,这有点困惑,但是让你想要添加的每个元素调用一个函数

$(elementIwantToBeAbleToMove).on('click',function(){
  AddToList($(this).text());
});
function AddToList(name){ var addItem = true; 
$(elementsIWantToCheckAgainst).each(function(){ 
   if($(this).text() == name)
   addItem = false;
}); 
if(addItem)
 $(elementIwantToAppend).append('<li>' + name + '</li>') //or div or whatever it is
};

由于您没有提供一个清晰的示例,所以不太清楚您想要的功能是什么,但是我已经创建了一个示例来演示我认为您希望代码做什么

需要注意的一点是,你的最后一行有一个打字错误。您对append的调用过早结束,从而切断了错误的分支。查看这些字符的最后几个字符,注意一个区别:

// incorrect
$('.widget-Text_Widget').find('ul').append(indIteminList ? '<li class="indhandle labelsidebar"><span class="sidebar-title">'+ title +'</span> <span class="sidebar-item-remove">x</span></li>') : '';

// correct
$('.widget-Text_Widget').find('ul').append(indIteminList ? '<li class="indhandle labelsidebar"><span class="sidebar-title">'+ title +'</span> <span class="sidebar-item-remove">x</span></li>' : '');

显示一些标记或制作小提琴会非常有帮助。你说它们都是对象是什么意思,它们在我看来像字符串?你也可以发布html吗?如果其中任何一个集合有多个元素,文本将不匹配,因为它将是集合中所有元素的文本。需要html。是的,根据我在编辑器中尝试的内容,快速复制并粘贴它以切换三元运算符中的顺序。很抱歉,我的问题很草率,一下子就解决了一些问题。谢谢你给我一个机会,我会看看你的提琴。这里很难解释,必须在这里重建它。我希望我能分享它,但它在开发服务器上…不能与世界分享。。。无论如何,在你的例子中,你会有更多的李。用户将点击li,而不是单独的按钮,li中的文本将填充边栏。我有这么多,问题是如果用户重新点击同一个li,它会在侧边栏中放入一个副本。如果侧边栏已经存在,我想删除它。