删除子元素的href标记a

时间:2015-01-11 11:27:42

标签: javascript jquery html

<div>
    <a target="_blank" href="/ShowDetails.php">
        <ul>            
            <li>Code1:123456</li>
            <li>Code2:654321</li>
        </ul>
     ...  somethings ....
    </a>
</div>

我希望当用户点击Code1:123456时他们转到ShowDetails.php,当用户点击Code2:654321时,没有任何反应,以便他们可以复制代码。现在,当用户点击Code2:...时,用户也会转到ShowDetails.php。 我希望整个div链接到ShowDetails.php期望Code2:654321

3 个答案:

答案 0 :(得分:1)

如果您使用<a>标记包围所有列表,则所有列表都将被视为链接。 您希望将链接移动到仅包围第一项中的文本:

<div>
    <ul>            
        <li><a target="_blank" href="/ShowDetails.php">Code1:123456</a></li>
        <li>Code2:654321</li>
    </ul>
</div>

顺便说一下,要避免使用target="_blank"以便为需要它的人提供辅助功能。如果他们无法通过单击相应的按钮继续上一页,他们可能会感到困扰。

答案 1 :(得分:0)

最好的解决方案是首先生成正确的html代码。您可以在第一个li元素内移动链接。

&#13;
&#13;
div {
  border: 1px blue dotted;
}

.spacer {
  background-color: #DDDDDD;
  height: 100px;
  border: none;
}
&#13;
<div>
  <ul>
    <li>
      <a target="_blank" href="/ShowDetails.php">Code1:123456</a>
    </li>
    <li>Code2:654321</li>
  </ul>
  <a target="_blank" href="/ShowDetails.php">
    <div class="spacer"></div>
  </a>
</div>
&#13;
&#13;
&#13;

修改:在需要的地方添加了额外的链接。

答案 2 :(得分:0)

你可以这样做:

$(function() {
    $("a").on('click', function(e) {

         if (e.target.innerHTML.indexOf('654321')>-1) e.preventDefault();

    });
});
  • 当然,为您的'标签'指定选择器的ID或类。
  • 如果您知道要查找的内容
  • ,则此解决方案有效

WORKING EXAMPLE

如果您有任何疑问,请告诉我。祝您好运!