РЕДАКТИРОВАТЬ: возможно, это испортило вопрос. означало "если html в ссылке равно переменной php"
поэтому предположим, что у нас есть меню неупорядоченного списка на странице, где поступают значения базы данных. Я хочу добавить активный класс к ссылке, имеющей то же значение, что и переменная базы данных. Как мне это сделать? я хотел бы иметь возможность делать это с текстовыми значениями и значениями числа.
<ul>
<li><a href="javascript:void(0)">text1</a></li>
<li><a href="javascript:void(0)">text2</a></li>
<li><a href="javascript:void(0)">text3</a></li>
</ul>
<ul>
<li><a href="javascript:void(0)">500</a></li>
<li><a href="javascript:void(0)">1000</a></li>
<li><a href="javascript:void(0)">1500</a></li>
</ul>
поэтому скажем, что эти переменные находятся на странице:
$var1 & $var2
повторяя это следующим образом:
<p><?php echo $var1; ?></p>
<p><?php echo $var2; ?></p>
выведут эти значения:
text1
1000
поэтому я хочу сделать некоторые php и jquery, которые будут делать следующие вещи:
если $ var1 равно text1, тогда сделайте одно из этих 2 в списке 1-й ul. не имеет значения, что:
<li class="active"><a href="javascript:void(0)">text1</a></li>
<li><a href="javascript:void(0)" class="active">text1</a></li>
если $ var1 равно text2, то второй элемент списка в списке 1-й ul должен получить активный класс на "li" или "a".
если $ var1 равно text3, то третий элемент списка в 1-м ящике должен получить активный класс на "li" или "a".
если $ var2 равно 500, тогда первый элемент списка в 2-м списке ul должен получить активный класс на "li" или "a".
если $ var2 равно 1000, тогда второй элемент списка в списке 2-й ul должен получить активный класс на "li" или "a".
если $ var2 равно 1500, то третий элемент списка в списке 2-й ul должен получить активный класс на "li" или "a".
Я сделал это по-другому.
сначала я помещаю уникальные имена классов во все пункты меню. Я использовал классы вместо id, потому что каждое меню оно использовало несколько раз на странице.
то я использовал этот код для создания активной css...
<?php if($varset1a == "500") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#idname1a ul.classname li.classname1").addClass("active"); });</script>
<?php } ?>
<?php if($varset1a == "1000") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#idname1b ul.classname li.classname2").addClass("active"); });</script>
<?php } ?>
<?php if($varset2a == "name1") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#anotheridname1 ul.classname li.anotherclassname1").addClass("active"); });</script>
<?php } ?>
<?php if($varset2a == "name2") { ?>
<script type='text/javascript'>$(document).ready(function() { $("#anotheridname2 ul.classname li.anotherclassname2").addClass("active"); });</script>
<?php } ?>
существует 2 набора меню, и каждый набор имеет 6 переменных, и каждое меню имеет много ссылок, поэтому вышеупомянутое должно быть скопировано и вставлено много раз, чтобы охватить все комбинации. выше всего 2 правила для одного, и 2 правила для набора два. есть еще много правил, чем те.
скажите об этом много:
varset1a1 через varset1a17
то varset1b имеет от 1 до 17, затем varset1c имеет от 1 до 17, затем varset1d имеет от 1 до 17, затем varset1e имеет от 1 до 17.
затем удвоить все это и изменить varset1 на varset2, а также о том, сколько разных правил существует. на самом деле больше, потому что меню 2 имеет больше ссылок, чем меню 1.
это много, чтобы программировать, но только 6 строк в меню получают в HTML-коде HTML.
это пример, если используются все 6 из обоих меню. это будет меньше, если использовать меньше меню. количество используемых меню варьируется, но это полная сумма:
<script type='text/javascript'>$(document).ready(function() { $("#id1a ul.class li.class1a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id2a ul.class li.class2a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id3a ul.class li.class3a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id4a ul.class li.class4a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id5a ul.class li.class5a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id6a ul.class li.class6a").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id1b ul.class li.class1b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id2b ul.class li.class2b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id3b ul.class li.class3b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id4b ul.class li.class4b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id5b ul.class li.class5b").addClass("active"); });</script>
<script type='text/javascript'>$(document).ready(function() { $("#id6b ul.class li.class7b").addClass("active"); });</script>
возможно, я могу сократить символы, если я сделаю все это между одним набором тегов <script> и одним предложением для документа? Я ненавижу установку php между jquery, потому что много раз Dreamweaver создает синтаксические ошибки.
РЕДАКТИРОВАТЬ:
ОК, теперь полный вывод html выглядит так и работает:
<script type='text/javascript'>
$(document).ready(function() {
$("#id1a ul.class li.class1a").addClass("active");
$("#id2a ul.class li.class2a").addClass("active");
$("#id3a ul.class li.class3a").addClass("active");
$("#id4a ul.class li.class4a").addClass("active");
$("#id5a ul.class li.class5a").addClass("active");
$("#id6a ul.class li.class6a").addClass("active");
$("#id1b ul.class li.class1b").addClass("active");
$("#id2b ul.class li.class2b").addClass("active");
$("#id3b ul.class li.class3b").addClass("active");
$("#id4b ul.class li.class4b").addClass("active");
$("#id5b ul.class li.class5b").addClass("active");
$("#id6b ul.class li.class7b").addClass("active");
});
</script>
как я это делал, поставив такие правила:
<script type='text/javascript'>
$(document).ready(function() {
<?php if($varset1a == "500") { ?>$("#id1a ul.class li.class1a").addClass("active");<?php } ?>
<?php if($varset1a == "1000") { ?>$("#id2b ul.class li.class2a").addClass("active");<?php } ?>
<?php if($varset2a == "name1") { ?>$("#id2a ul.class li.class1b").addClass("active");<?php } ?>
<?php if($varset2a == "name2") { ?>$("#id2b ul.class li.class2b").addClass("active");<?php } ?>
});
</script>
Непонятно, почему вы не повлияли на разметку HTML при ее создании на сервере, так как я предполагаю, что у вас уже есть переменные на сервере - возможно, они поступают из запроса клиента (навигация по страницам?). Однако, чтобы ответить на ваш вопрос:
Вам понадобятся переменные, доступные на клиенте с Javascript. Затем вы можете перебрать li
и сравнить их значение с переменными. Как только совпадение найдено, вы можете внести коррективы в свой элемент DOM (например, jQuery addClass).
Для циклизации см. JQuery каждый и текст jQuery для текстового содержимого элемента.
Как указано выше, для этого требуется, чтобы Javascript "знал" эти переменные. Там нет волшебства, чтобы сделать эту работу. Вам нужно будет получить их с сервера, либо он включен как код Javascript на странице, первоначально запрошенной с сервера (например, когда вы делаете http://www.example.com/index.html), либо ваш код Javascript делает XMLHttpRequest для сервера (см. JQuery ajax для этого) и анализирует переменные из ответа.
Вы можете сделать это с помощью встроенного оператора if
<ul>
<li><a href="javascript:void(0)" style="<?php echo $var1 == "text1" ? "active":"" ?>">text1</a></li>
<li><a href="javascript:void(0)" style="<?php echo $var1 == "text2" ? "active":"" ?>">text2</a></li>
<li><a href="javascript:void(0)" style="<?php echo $var1 == "text3" ? "active":"" ?>">text3</a></li>
</ul>
<ul>
<li><a href="javascript:void(0)" style="<?php echo $var2 == "500" ? "active":"" ?>">500</a></li>
<li><a href="javascript:void(0)" style="<?php echo $var2 == "1000" ? "active":"" ?>">1000</a></li>
<li><a href="javascript:void(0)" style="<?php echo $var2 == "1500" ? "active":"" ?>">1500</a></li>
</ul>