如果没有id并且class不唯一,如何选择正确的元素?

时间:2019-06-03 15:21:47

标签: javascript jquery

我有一个按钮列表。只需要从列表中选择一个按钮(第三个)。因此,一旦我单击“新按钮”,它必须执行按钮#3(ThirdButton)中的操作。我的问题是<li>标签没有ID,因此下面的迭代失败。

<div class="listButtons" id="anyId">
            <ul class="test">               
                <li>
                    <input value="Btn1" class="btn" name="Elem 1" title="Elem 1" type="button">
                </li>
                <li>
                    <input value="Btn2" class="btn" name="Elem 2" title="Elem 2" type"button">
                    <input value="Btn3" class="btn" name="Elem 3" title="Elem 3" type"button">
                    <input value="Btn4" class="btn" name="Elem 4" title="Elem 4" type"button">
                </li>
            </ul>
        <div>

我尝试过: 1。

const newButton = $("#someId");     
const buttonsList = $("ul.test")
const thirdButton = buttonsList.find("input[name='Elem 3']")

newButton.click(() => {
   thirdButton.click()
})

2。

const newButton = $("#someId");     
const buttonsList = $("ul.test")
const thirdButton = buttonsList.find("input[name='Elem 3']")

$(function() {
   $("ul.test").find(".btn").each((index, elem) => {
          let elementValue = $(elem).attr("value")
          if(elementValue === "Btn3") {
          newButton.click(() => {
              $(elem).click()
             })
           }
         })

3 个答案:

答案 0 :(得分:0)

您可以按他的名字选择该项目。在您的情况下,只有一个具有相同名称的元素,因此索引为0。

<div class="listButtons" id="anyId">
  <ul class="test">               
    <li>
      <input value="Btn1" class="btn" name="Elem 1" title="Elem 1" type="button" onclick="alert(this.value)">
    </li>
    <li>
      <input value="Btn2" class="btn" name="Elem 2" title="Elem 2" type="button" onclick="alert(this.value)">
      <input value="Btn3" class="btn" name="Elem 3" title="Elem 3" type="button" onclick="alert(this.value)">
      <input value="Btn4" class="btn" name="Elem 4" title="Elem 4" type="button" onclick="alert(this.value)">
    </li>
  </ul>
<div>

<script>
  btn_to_click = document.getElementsByName("Elem 3");
  btn_to_click[0].click();
</script>

答案 1 :(得分:0)

在使用Jquery时,您可以执行以下操作:

$(".test").find("li").find("input[name='Elem 3']")

答案 2 :(得分:0)

您还可以通过标签名称获取元素。 我将从获取父元素的类或id开始,然后通过带有for循环的标记名称遍历子元素。

document.getElementById('parent').getElementsByTagName('childrensTags')

然后遍历那些,直到找到所需的控件