1

私はいくつかのコードを調べなければならず、私が理解していない次の関数を見つけました。hindContainerとは何ですか、each()の戻り値を取得し、このオブジェクトはコールバック関数内に配置する必要があるようです。

推測していただきありがとうございます。残念ながら、開発者に連絡することはできません。つまり、関数は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>
4

1 に答える 1

0

クラス「userHintPanel」を持つすべての要素を取得し、テキストコンテナを閉じる直前にコンテンツを追加し、その後に準備されたすべてのuserHintPanelを表示します。

ひとこと:

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

これは、次のようなものを対象としています。

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

ただし、コードでは、テキストではなく要素自体を取得します。開発者はおそらくこれを意味しましたか?

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

本当に要素を取得するつもりである場合は、コードの理解を深めるために、変数の名前を「closeTextElement」に変更することをお勧めします。

別の奇妙なこと:

var hintContent = hintContainer.next();

これにより、最後のuserHintPanelで、hintContentが「未定義」になります。それは意図ですか?

もう1つの非常に重要なこと:

userHintPanelの親はiFrameですか?その場合、Safariでは次のステートメントが確実に失敗します。

   hintContainer.parent()

取得する必要のあるエラーは次のとおりです。SCRIPT5022:DOM例外:HIERARCHY_REQUEST_ERR(3)

于 2012-04-23T11:20:39.683 に答える