Установите <a>, чтобы ничего не отображать - PullRequest
1 голос
/ 29 июня 2010

Вот мой HTML:

<td>
  <a class="link" href="#">
   <span class="download">Link</span>
  </a>
  <a class="link" href="#">
    <span class="csvdownload">Link 2</span>
  </a>
</td>

Мне нужно установить этот CSS:

a.link {
  display: none;
}

Но только для <a>, который содержит диапазон с классом csvdownload

В идеале нужно делать это строго с JavaScript, а не с плагином, как jQuery ...

Ответы [ 4 ]

2 голосов
/ 29 июня 2010

Если у вас есть контроль над разметкой, это будет намного лучше:

<td>
  <a class="download" href="#">Link</a>
  <a class="csvdownload" href="#">Link 2</a>
</td>

Вы уже знаете, что теги <a> являются "ссылками", поэтому добавьте, что класс CSS является избыточным (замените любой CSSправила, использующие .link, чтобы просто использовать a).Затем скройте настройки ссылок display:none непосредственно в классе .csvdownload.

Если вам все еще нужен класс "link", чтобы отличать их от других якорей, вы можете просто использовать оба класса:

<td>
  <a class="link download" href="#">Link</a>
  <a class="link csvdownload" href="#">Link 2</a>
</td>
1 голос
/ 29 июня 2010
var spans = document.getElementsByTagName('span');
for (var i=0,n=spans.length;i<n;i++) {
  if (spans[i].className=="csvdownload") {
    spans[i].parentNode.style.display='none';
    break;
  }
}

Возможно, вам понадобится проверить текстовый узел в FF

0 голосов
/ 30 июня 2010

Если у вас нет CSS-правил, прикрепленных к a.link, которые бы передавали ширину / высоту в отсутствие содержимого, просто установив display: none; в span.csvdownload, вы получите то же самое, что скрыть родительский элемент. Вам даже не понадобится Javascript, просто добавьте его в таблицу стилей.

0 голосов
/ 29 июня 2010

Чтобы расширить предыдущий ответ, вы также можете использовать:

var byClass = document.getElementsByClassName,
    el;
if (byClass) {
    el = byClass('cvsdownload');
} else {
    var spans = document.getElementsByTagName('span');
    for (var i = 0, n = spans.length; i < n; i++) {
        if (spans[i].className == "csvdownload") {
            el = spans[i];
            break;
        }
    }
}
if (el) {
    el.parentNode.style.display = 'none';
}

Как правило, по возможности быстрее использовать встроенные методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...