Это было в моем .htaccess
DirectoryIndex index.html index.htm
index.html, содержащем PHP-код. По умолчанию PHP не будет обрабатывать файлы с такими расширениями, как htm *, как PHP-код.
Вы можете переопределить это, добавив следующее в .htaccess:
<FilesMatch ".+\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
Вы должны понимать, что jQuery работает с деревом HTML DOM на стороне клиента. jQuery не работает непосредственно с компонентами JSF, как вы писали в исходном коде JSF, но jQuery работает непосредственно с деревом HTML DOM, которое создается этими компонентами JSF. Вам нужно открыть страницу в webbrowser и rightclick, а затем View Source . Вы увидите, что JSF добавляет идентификатор сгенерированных входных элементов HTML с идентификаторами всех родительских компонентов NamingContainer
(таких как <h:form>
, <h:dataTable>
и т. Д.) С :
как разделитель по умолчанию. Так, например,
<h:form id="foo">
<p:selectManyCheckbox id="bar" />
...
закончится сгенерированным HTML как
<form id="foo" name="foo">
<input type="checkbox" id="foo:bar" name="foo:bar" />
...
. Вместо этого вам нужно выбрать элементы точно . Однако :
является особым символом в CSS-идентификаторах, представляющих псевдоселектор. Чтобы выбрать элемент с идентификатором :
в идентификаторе с помощью селекторов CSS в jQuery, вам нужно либо избежать его с помощью обратного слэша, либо использовать селектор атрибутов [id=...]
или просто использовать старый getElementById()
:
var $element1 = $("#foo\\:bar");
// or
var $element2 = $("[id='foo:bar']");
// or
var $element3 = $(document.getElementById("foo:bar"));
Если вы видите автогенерированную часть j_idXXX
в идентификаторе, где XXX
представляет инкрементное число, тогда вы должны указать конкретному компоненту фиксированный идентификатор, поскольку инкрементное число является динамическим и может быть изменено в зависимости от того, физическое положение в дереве.
. В качестве альтернативы вы также можете просто использовать имя класса:
<x:someInputComponent styleClass="someClassName" />
, которое заканчивается в HTML как
<input type="..." class="someClassName" />
, чтобы вы могли получить его как
var $elements = $(".someClassName");
Это позволяет лучше абстрагироваться и повторно использовать. Разумеется, эти элементы не уникальны . Только основные элементы макета, такие как заголовок, меню, содержимое и нижний колонтитул, действительно уникальны, но они, как правило, обычно не находятся в NamingContainer
.
Как еще одна альтернатива, вы могли бы просто пройти сам элемент HTML DOM в функцию:
<x:someComponent onclick="someFunction(this)" />
function someFunction(element) {
var $element = $(element);
// ...
}
Вы также можете использовать jQuery «Attribute Contains Selector» (здесь находится url http://api.jquery.com/attribute-contains-selector/ )
Например, если у вас есть
<p:spinner id="quantity" value="#{toBuyBean.quantityToAdd}" min="0"/>
, и вы хотите что-то сделать на его объекте, вы можете выбрать его с помощью
jQuery('input[id*="quantity"]')
, и если вы хотите распечатать его значение, вы можете сделайте это
alert(jQuery('input[id*="quantity"]').val());
. Чтобы узнать реальный тег html элемента, вы всегда можете посмотреть на реальный элемент html (в этом случае счетчик был переведен на вход) с использованием firebug или, например, инструментов разработчика или просмотра источник ...
Daniel.
Если вы используете RichFaces
, вы можете проверить rich:jQuery
comonent. Он позволяет указать идентификатор стороны сервера для компонента jQuery
. Например, у вас есть компонент с указанным идентификатором сервера, тогда вы можете применить любой материал, связанный с jQuery
, следующим образом: <rich:jQuery selector="#<server-side-component-id>" query="find('.some-child').removeProp('style')"/>
.
Для получения дополнительной информации, пожалуйста, проверьте doumentation .
Надеюсь, что это поможет.
Посмотрите, что это поможет вам, когда я выбираю опыт = Да, мой диалог, id которого является dlg3, является popup.and, если значение No, оно не откроется