Javascript 如何选择没有类和id的元素,即';你不总是在那里吗?

Javascript 如何选择没有类和id的元素,即';你不总是在那里吗?,javascript,html,css,Javascript,Html,Css,情况是这样的-在我的代码中有一个,它出现在我需要应用定位的特定条件下。它没有id,没有类。我不能使用第n个子项,因为有时它不在那里,所以下一个被选中,破坏了我的设计。我已经研究这个问题好几个月了,Javascript似乎将是这里唯一的答案,但我甚至不知道从哪里开始 我想我可以修改源代码,给一个id,但这不是我想要的优雅解决方案。以这种方式修改代码将破坏插入此代码的插件的删除脚本 任何帮助都将不胜感激。谢谢。您需要做的是找出li元素的唯一点,它可以是id、类、属性、样式、innerText或任何内

情况是这样的-在我的代码中有一个
  • ,它出现在我需要应用定位的特定条件下。它没有id,没有类。我不能使用第n个子项,因为有时它不在那里,所以下一个
  • 被选中,破坏了我的设计。我已经研究这个问题好几个月了,Javascript似乎将是这里唯一的答案,但我甚至不知道从哪里开始

    我想我可以修改源代码,给
  • 一个id,但这不是我想要的优雅解决方案。以这种方式修改代码将破坏插入此代码的插件的删除脚本


    任何帮助都将不胜感激。谢谢。

    您需要做的是找出li元素的唯一点,它可以是id、类、属性、样式、innerText或任何内容。
    例如:

    • 元素的innerText是'i am li',只需遍历容器中的所有li元素,使用
      ele.innerText
      进行匹配
    • 或者li有一个背景:红色,这是唯一的,您可以使用
      窗口.getComputedStyle(元素).getPropertyValue(“背景”)
      遍历容器中的所有li元素
    更新:
    首先,如果您的li元素具有唯一的属性、类、id,则会更容易

    <li class="test" id="test" name="handsome"></li>
    li.test {}
    li#test {}
    li[name="handsome"] {} // ~=, ^=, $=, *= will also work
    
  • li.test{} li#测试{} li[name=“hasty”]{}/~=,^=,$=,*=也可以
    在您的情况下,若标签的href属性是唯一的,您可以像下面这个简单的例子那个样做

    function getTarget() {
    
        //find all the li elements in your container
        var $targetList = $('.container li');
        var $link;
        for( var i = 0; i < $targetList.length;i++) {
            $link = $($targetList[i]).find('a');
    
            //you can use any unique point to find the one
            if ($link.length && $link.attr('href') == 'xxxxxx') {
                return $targetList[i];
            }
        }
    }
    
    // the target is the li you want
    target = getTarget();
    
    函数getTarget(){ //查找容器中的所有li元素 var$targetList=$('.container li'); var$link; 对于(变量i=0;i<$targetList.length;i++){ $link=$($targetList[i]).find('a'); //您可以使用任何唯一点来查找该点 如果($link.length&&$link.attr('href')=='xxxxxx'){ 返回$targetList[i]; } } } //目标是你想要的李 target=getTarget();
    此外,如果您不确定href值,可以使用
    string.indexOf('http://www.test.com“)
    ,如果你的李的内部文本是唯一的,只要改变判断,这取决于你的真实情况,只需找到唯一的点并进行匹配。

    请共享您的代码,并让我们确切地知道您要做什么。它是如何显示在那里的?如果以编程方式创建它,可以直接引用它。可以让JSFIDLE?Nerf遍历所有列表项并查看内容吗?@bahgheera,是否要捕获变量中的
  • ?全部
  • s还是只有一个?啊,这正是我想要的-我知道js会处理它,但我并不完全精通js及其语句。对于那些想知道的人,这里是我的代码:等等-说真的,你如何键入cr/lf?按enter键仅保存我的评论:/让我们再试一次-这是我的代码:“
  • 有成员等待批准。
  • ”看到了吗?没有身份证,就没有班级。我不想修改生成此标记的代码。谢谢大家的回复。@bahgheera:你真的应该在你的问题中包含这些代码,而不是对其中一个答案发表评论。您还应该包括周围的标记,即可能存在的其他li元素,以及父ul。