У меня есть составной компонент, который использует PrimeFaces <p:selectOneMenu>
определенные как:Когда составной компонент, содержащий JS код визуализируется несколько раз, JS работает только на последнем компоненте
<p:selectOneMenu id="inOut" onchange="inOutChanged()">
..
</p:selectOneMenu>
то у меня есть файл JavaScript, который входит в состав компонента, который определяет функцию inOutChanged()
как
function inOutChanged() {
var inOut = $({cc.clientId}:inOut);
if(inOut.val() == "INC") {
slider.addClass("includedInRange");
}
}
Этот составной компонент прекрасно работает, когда есть только одна на этой странице. Проблема в том, что мне нужно иметь 4 из них на странице. Поэтому, когда я меняю выбор одного составного компонента, он меняет класс ползунка последнего компонента. Я считаю, что это связано с тем, что есть функции 4 inOutChanged()
, которые определены на странице.
Есть ли способ ограничить функцию или назвать ее уникально, чтобы они не топтались друг на друга?
Вы искажая эту проблему. Во-первых, как и где вы указали переменную 'slider'? Это похоже на то, что вы только что переопределили значение переменной каждый раз, чтобы в конечном итоге удерживать последнее присвоенное значение. Все, у меня сложилось впечатление, что вы на самом деле означали «составной компонент», когда вы сказали «компонент»? Таким образом, вопрос будет иметь гораздо больше смысла. – BalusC
@BalusC Да, это композитный компонент. Переменная ползунка также объявляется с использованием подхода similair с cc.clientId. Возможно, что я переопределил переменную ползунка. Я думаю, мне придется попробовать подход, который вы предложили в своем ответе, может быть, тоже. – mpaulse