Вы получаете текстовое содержимое li
, которое содержит другие узлы (в результате получается текст li
+ его дочерние узлы, поэтому никогда не будет равно "Log Off"),
Вы можете получить текст узла, клонируя его, удаляя его дочерние элементы и получая только его текст, так как ваш оператор if
здесь будет работать правильно
$(this).clone().children().remove().end().text()
Также неправильно указывать одинаковые идентификаторы для нескольких узлов (дочерние элементы узла li
), поэтому используйте вместо него класс:
См. фрагмент ниже:
$(document).ready(function() {
$('ul#main-navigation li').each(function(index) {
var text =jQuery.trim($(this).clone().children().remove().end().text());
console.log(text);
if (text == "Log Off") {
$(this).children().attr('class', "log_out_link");
}
});
});
$(document.body).on('click', '.log_out_link', function(e) {
e.preventDefault();
alert("edsddd");
return false;
});
p.log_out_link {
color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="main-navigation">
<li>Log On</li>
<li>Log In<p><a>text</a></p><p><a>text</a></p></li>
<li>Log Off
<p><a>text</a></p><p><a>text</a></p></li>
<li>Log Out<p><a>text</a></p><p><a>text</a></p></li>
</ul>