如何选择没有课程且没有身份证明的元素,并不总是存在?

时间:2015-05-19 05:12:16

标签: javascript html css

在这种情况下 - 我的代码中有<li>出现在我需要应用定位的某些条件中。它没有id,没有课程。我不能使用nth-child,因为有时它不存在,所以下一个<li>被选中,这打破了我的设计。我已经在这几个月了,似乎Javascript将是这里唯一的答案,但我甚至不知道从哪里开始。

我想我可以修改源代码以给<li>一个id,但这并不像我想的那样优雅。修改代码将破坏插入此代码的插件的删除脚本。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

你需要做的是找出li元素的唯一点,它可以是id,class,attribute,style,innerText或任何东西。
例如:

  • 元素的innerText是'我是li',只是遍历容器中的所有li元素,使用ele.innerText来匹配它
  • 或者li有一个背景:红色是唯一的,您可以使用window.getComputedStyle(element).getPropertyValue("background")来遍历容器中的所有li元素。

<强>更新
首先,如果你的li元素具有唯一属性,class,id,那将更容易。

<li class="test" id="test" name="handsome"></li>
li.test {}
li#test {}
li[name="handsome"] {} // ~=, ^=, $=, *= will also work

在你的情况下,如果a标签的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();

另外,如果您不确定是否需要href值,您可以使用string.indexOf('http://www.test.com'),如果您的li的innerText是唯一的,只需更改判断,这取决于您的实际情况,只需找到唯一的点并匹配它。