2012-04-23 34 views
1

我必須通過一些代碼工作,發現以下函數,我不明白。 hintContainer是什麼,它抓住了每個()的返回值,看起來這個對象應該放在回調函數中?JQuery - 獲取函數的線索

預先感謝您的任何猜測,不幸的是我無法聯繫開發人員。簡而言之,該函數應該抓取所有具有類userHinterPanel和應該顯示它們的div。

function prepareHintMessages() { 
// gets all userHintePanels 
var hintContainer = jQuery('div.userHintPanel').each(function() { 
    hintContainer = jQuery(this); 
    // hint content div 
    var hintContent = hintContainer.next(); 
    // hint content text 
    var closeText = hintContainer.find('div.closeTextContainer'); 
    // inserts text into the content container 
    hintContent.insertBefore(closeText); 
    // show the complete hint panel 
    hintContainer.parent().show(); 
}); 
} 

更新HTML摘錄,這是信息盒:

<form id="form" name="form" method="post" 
action="xxx.jsf" 
enctype="application/x-www-form-urlencoded" class="newPatientForm"> 
<div id="form_showAllHintsContainer" class="showAllHintsContainer" 
    onclick="jQuery('#form_showAllUserHints').click();" 
    title="Alle verfügbaren Hinweise auf dieser Seite einblenden"> 
    ?<input class="hidden" id="form_showAllUserHints" 
     name="form_showAllUserHints" 
     onclick="A4J.AJAX.Submit('form',event,{'oncomplete':function(request,event,data){prepareHintMessages();},'similarityGroupingId':'form_showAllUserHints','parameters':{'userPrefActionParamShow':'NEW_PATIENT_HINT','form_showAllUserHints':'form_showAllUserHints'} });return false;" 
     value="showUserHints" type="button" /> 
</div> 
<div class="generalPadding"> 
    <div id="form_hintRerenderContainer"> 
     <div id="form_newPatientHintWithIsh" 
      class="userHintPanelContainer newPatient"> 
      <div id="form_newPatientHintWithIshHintPanel" 
       class="alert-message block-message warning userHintPanel"> 
       <a href="#" onclick="closeHintMessage(this);" 
        title="Hinweis ausblenden" class="close">×</a> 
       <div class="header">Hinweis</div> 
       <div class="text"> 
        <div class="closeTextContainer" 
         style="position: relative; height: 20px;"> 
         <a href="#" onclick="closeHintMessage(this);" 
          style="font-size: 14px;" class="close"> Hinweis ausblenden</a> 
        </div> 
       </div> 
       <input class="hidden hideHintButton" 
        id="form_newPatientHintWithIshHintPanelHideButton" 
        name="form_newPatientHintWithIshHintPanelHideButton" 
        onclick="A4J.AJAX.Submit('form',event,{'similarityGroupingId':'form_newPatientHintWithIshHintPanelHideButton','parameters':{'form_newPatientHintWithIshHintPanelHideButton':'form_newPatientHintWithIshHintPanelHideButton','userPrefActionParam':'NEW_PATIENT_HINT'} });return false;" 
        value="hideUserHints" type="button" /> 
      </div> 
      <div class="hintContent"> 
       <ul>...</ul> 
      </div> 
     </div> 
    </div> 

回答

0

它graps帶班「userHintPanel」的元素,只是在靠近文本容器之前增加了一些內容,並且顯示了在所有準備userHintPanels

一件事:

var closeText = hintContainer.find('div.closeTextContainer'); is a bit strange. 

它的目標是什麼塔t看起來像這樣:

<div class="closeTextContainer">Panel x Close</div> 

但是在你的代碼中它不會抓取文本,而是抓取元素本身。也許開發人員是這個意思嗎?

var closeText = hintContainer.find('div.closeTextContainer').text(); 

如果確實想抓取元素,最好將var重命名爲'closeTextElement'以更好地理解代碼。

另一個奇怪的事情:

var hintContent = hintContainer.next(); 

這將導致在最後userHintPanel,hintContent是 '未定義'。這是打算嗎?

另一個非常重要的事情:

是userHintPanel的父母一個iFrame?如果是這樣的情況下,下面的語句將在Safari失敗是肯定的:

hintContainer.parent() 

你應該得到的錯誤是:SCRIPT5022:DOM異常:HIERARCHY_REQUEST_ERR(3)

+0

謝謝,這樣你就不會看到任何形式的在這個代碼中的問題?我在問,因爲我只是在iPad上遇到了一個bug(Safari瀏覽器的屏幕凍結),而JS代碼是我的猜測,它對這個問題負責。在我的桌面上(Windows-Firefox),所有事情都像預期的那樣發生。 – Jochen 2012-04-23 11:41:21

+0

它似乎在做點什麼。但是,var closeText = hintContainer.find('div.closeTextContainer');有點奇怪。它針對一個元素,如

Panel x Close
,但在你的代碼中,它不會抓取文本,而是抓取元素本身。 開發者也許是這個意思嗎? var closeText = hintContainer.find('div.closeTextContainer')。text(); – 2012-04-23 12:20:42

+0

嗯,我試圖furhter找到錯誤,使用日誌消息和我的Tomcat告訴我這個:2012年3月23日14:30:20,161 org.apache.myfaces.renderkit.html.util.DefaultAddResource.writeMyFacesJavascriptBeforeBodyEnd(DefaultAddResource。 java:363) - [http-8444-12] 警告:MyFaces特殊的javascript無法從請求映射中檢索。 我GOOGLE了,但無法弄清楚是什麼原因造成這個問題。這很難察覺。 JS函數運行正常但一次爆炸。我正在使用JSF 2.0。我應該在哪裏看下? – Jochen 2012-04-23 12:29:25