JSF hinzufügen hover auf ein panel
JSF-2.0, Mojarra 2.1.19, PrimeFaces 3.4.1
Muss ich hover-event(mouseOver mouseOut) für eine p:panel
Komponente. Lasst uns vorstellen, es ist:
<h:form id="dataTableForm">
<p:dataTable id="dataTable>
<p:panel id="hoverPanel">
<p:commandLink id="button" value="Show" rendered="condition"></p:commandLink>
</p:panel>
</p:dataTable>
</h:form>
Meiner funktionale Anforderung sagt, wenn Sie den Mauszeiger auf die hoverPanel
, p:commandLink
Komponente dargestellt werden muss, ansonsten(mouseOut) es muss versteckt werden. Diese kann getan werden, indem es die CSS - display
Eigenschaft, die ich Schätze. Ich möchte nicht rendered
Eigenschaft von p:commandLink
denn es hat schon eines und das sollte auch nicht braucht, geht zum server und wieder zurück kommen, Sie muss getan werden, auf der client-Seite.
Ich habe versucht, zu verwenden:
$('.hoverPanel').hover(
alert('mouseOn');
);
Aber das hat nicht funktioniert, auch ich brauche sth. mehr spezifisch für jedes unterschiedliche hoverPanel
Komponenten, weil Sie in einer p:dataTable
.
- Sie Zugriff auf eine Klasse, sondern definieren Sie eine id, die würde auch geändert werden, durch ein naming-container. Verwenden Sie eine styleClass-Attribut statt.
- Ich habe eine styleClass als benannte hoverPanel. Aber selbst wenn es funktioniert ist es nicht meine Anforderung, ich brauche nicht eine Sache, die gilt für alle hoverPanel Komponenten. Wie ich sagte, gibt es mehr als einen Platten in solchen Fällen, denn es ist enthalten in einer datatable. So sollte es angewendet werden, um spezifische.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du falsch Selektor: Sie definiert keine Klasse auf Ihre Tafel, sondern definierte id, die würde geändert werden, durch die naming-container. Unter Berücksichtigung Ihrer Kommentar die einfachste Lösung wird sein, zu definieren, eine zusätzliche Klasse für ein panel benötigt.
Ansicht:
Und tun Ihren job in JavaScript:
Ausführliche Antwort
Wie pro Ihre Kommentare und gegeben selbst beantworten, das ist natürlich nicht der beste Weg, um die Arbeit zu tun, werde ich eine vollständige Antwort. Wenn Sie sich entscheiden, Fragen, nächste Frage, und eine Antwort bekommen, versuchen Sie Ihr bestes, um vollständig zu untersuchen das code, den Sie vorgelegt worden sind. Auch wäre es klug, einige JavaScript/jQuery auf dem Weg.
Die Ansicht zeigt zwei datatable-Spalte mit der zweiten Spalte zeigt das panel mit einem link, den Sie wollen. Die Tabelle enthält alle möglichen alternativen, so sicher sein, wählen Sie die beste Konfiguration für Sie.
Ansicht:
JavaScript:
Bean:
styleClass="base-class #{bean.condition ? 'change-panel' : ''}
mit meinem code. Gremium hat bereits eine Klasse zum Beispiel panelClass. Wie sollte ich Sie ändern Ihre styleClass Wert?$('.change-panel').hover(alert('2'));
und wenn die Seite geladen wird ist es Alarmierung 2. Aber es funktioniert nicht wie commandLink hat die onmouseover-oder onmouseout-Ereignis.styleClass="base-class #{bean.condition ? 'change-panel' : ''}
panel und commandLink hatrendered="#{bean.condition}"
du zuerst entfernen Rendern auf commandLink , wie wenn die Bedingung falsch wird der link nicht auf der html:
});