У меня есть все ссылки, содержащие текст "edit", замененный изображением. Я хочу, чтобы это произошло на моем сайте, за исключением определенного класса.
У меня есть этот код прямо сейчас:
$('a:contains("Edit")').html("<img src='<%= asset_path 'edit.png' %>'/>").css('display',
'inline-block');
и я попытался:
$('a:contains("Edit")').not$("div[class='section-nav']").html("<img src='<%= asset_path
'edit.png' %>'/>").css('display','inline-block');
но это опускает все действие везде, а не только в указанном классе div.
htlm для конкретного div, который мне не нужен.
<div id="ideas_navigation" class="section-nav">
<li>
<a href="/ideas/bpul_dishes/edit">Edit Idea</a>
</li>
</div>
html для ссылок, которые я хочу заменить текстом:
<a href="/ideas/bpul_dishes/edit">Edit</a>
Я бы использовал функцию фильтрации:
$('a:contains("Edit")').filter(function() {
return $(this).closest('div.section-nav').length == 0;
}).html("<img src='<%= asset_path 'edit.png' %>'/>");
Вышеизложенное будет возвращать якоря, содержащие слово "Edit", которые не входят в div с классом .section-nav
.
Не уверен, что указанный выше .html
будет работать (он берется прямо из кода в вашем примере), поскольку, похоже, много одиночных кавычек
Попробуй это:
$('*:not(div.section-nav) a:contains("Edit")')
.html("<img src='<%= asset_path 'edit.png' %>'/>").css('display','inline-block');
... предполагая, что вы хотите заменить html и изменить css для всех ссылок "Изменить", которые не входят в div, имеющих раздел класса-nav.
JQuery
$('a:contains("Edit")').parent().parent(":not(.section-nav)").html("NEW HTML HERE").css('display','inline-block');
.not$("div[class='section-nav']")
на.not($("div[class='section-nav']"))
при отсутствии скобок / скобок.