Я использую переменные сеанса php для сохранения состояния страницы, как в приведенном ниже примере, чтобы сохранить тот факт, что элемент был выбран и получил новый класс. Класс удаляется позже, если щелкнуть по нему второй раз.
Однако я также устанавливаю глобальную переменную так, чтобы моя клиентская сторона «знала» состояние и выполняла какой-то другой код, который влияет на другие элементы на странице в другом месте (выделяет их). Этот код использует «this» элемента, по которому щелкнули, чтобы узнать, как выделить другие элементы. <==== это важный бит. </p>
$("listRow").click(function(){
if (globalVariable == "someClass")
{
// clean global
globalVariable = " ";
/* call a server side script via ajax to unset php session variable */
}else{
/* call a server side script via ajax to create a php session variable, later used on page refresh to retain page state*/
// also set a global js variable for use elsewhere
globalVariable = "someClass";
};
$(this).toggleClass(".someClass");
// alot of code to do something to other elements on the page using some data that is specifically available in this element
});
Теперь представьте себе нормальный сценарий:
Пользователь нажимает список строк, вызывающих код. // пока все хорошо
Пользователь обновляет страницу: listRow получает необходимый ему класс, НО ....
ни один из других элементов не будет выделен. Это происходит потому, что
listRow
не был нажат, и я получаю это.
Итак, я хочу создать небольшую функцию, которая содержит код для выделения других элементов страницы.
У меня есть ряд предварительных условий: весь javascript, включая глобальные переменные, содержится во внешних js-файлах. Не допускается помещать сырые js в разметку. то есть ограничение заключается в том, что я не могу объявить глобальную переменную в, а затем использовать php для ее заполнения из переменной сеанса.
Я думаю, что могу определить тот факт, что предмет был затронут php, выполнив следующие действия. Я говорю, что думаю, потому что я не уверен, задает ли это вопрос "если какой-либо элемент в listRow ..." или выражение может каким-то образом идентифицировать конкретный элемент.
function mySelfStarter()
{
if ($("listRow").hasClass("someClass"))
{
// some code
};
};
Я знаю, что могу просто заставить функцию выполняться при обновлении, например, где-то в документе onload:
mySelfStarter();
Я хочу найти элемент с классом someClass
, а затем найти идентификатор и затем использовать этот идентификатор для установки как глобальной переменной, так и выделения других не связанных элементов. И все это должен быть код на стороне клиента.
Что-то вроде:
if ($("listRow").hasClass("someClass"))
{
// find the element that has the class "someclass"
// get the id of this element
// do something with id
};
недавно обслуживаемая страница перед нажатием
<div id="listWrapper" class="wrapper">
<div id="value1" class="listRow"></div>
<div id="value2" class="listRow"></div>
<div id="value3" class="listRow"></div>
<div id="value4" class="listRow"></div>
</div>
после нажатия
<div id="listWrapper" class="wrapper">
<div id="value1" class="listRow"></div>
<div id="value2" class="listRow someClass"></div>
<div id="value3" class="listRow"></div>
<div id="value4" class="listRow"></div>
</div>
после обновления страницы
<div id="listWrapper" class="wrapper">
<div id="value1" class="listRow"></div>
<div id="value2" class="listRow someClass"></div>
<div id="value3" class="listRow"></div>
<div id="value4" class="listRow"></div>
</div>