2012-10-10 52 views
0

我有我的形式像這樣的jsf數據表。如何訪問使用JavaScript裏面的jsf數據表列中的commandLink

<h:form id="personId"> 
    <h:dataTable id="hdatatable" value="#{Person.personList}" 
      border="0" cellpadding="10" cellspacing="5" 
      var="per" styleClass="order-table" 
      headerClass="order-table-header" 
      rowClass="order-table-odd-row,order-table-even-row" 
      syle="width: 950px" > 


     <h:column id="tcoulm"> 
     <f:facet name="header">Action</f:facet> 
     <h:commandLink id="editLink" value="Edit" action="#{person.editAction(per)}"/> 
     <h:commandLink id="cancelLink" value="Undo" action="#{person.undoAction()}"/> 
</h:column> 

</h:datatable> 
</h:form> 

在上表中我試圖訪問編輯和撤消使用javascript.So行動,我分配他們Ids.But,當我在它就像this.Here HTML源存在的意思是我看到這些元素的標識猜猜表格的第三行。我可以在源代碼中看到列ID。

PERSONID:hdatatable:3:EDITLINK

如果我只給出ID來命令鏈接,並給「prependId = 「假」 在形式上還是我看到的commdndLink的編號如下

j_id1267631877_14a2c285:EDITLINK

如果我只用表單ID和commandLink標識

formId:j_id1267631877_14a2c285:EDITLINK

如何準確地訪問datatatble柱內的元素?

回答

1

只需使用

var editLink = document.getElementById("personId:hdatatable:3:editLink"); 

如果你不想單獨訪問他們,但你要訪問他們,然後更容易是給他們的樣式類

<h:commandLink ... styleClass="editLink" /> 

,這樣就可以通過類名來選擇他們,而不是(假設jQuery)

var $editLinks = $(".editLink"); 
+0

我以爲首先使用jquery,但我在我的應用程序中使用了一些primefaces組件。所以,當我使用jQuery的primefaces組件不工作。 – mdp

+0

PrimeFaces已經捆綁了jQuery。所以如果你捆綁了自己的版本,那麼它就會發生衝突,導致所有顏色的錯誤。只是不要捆綁你自己的。 jQuery將會自動包含在包含PrimeFaces組件的頁面上。當你有一個不包含PrimeFaces組件的頁面時,你可以通過'' – BalusC

+0

@BalusC ...顯式地包含PrimeFaces jQuery ... ....感謝它的工作。 – mdp

相關問題