我必须完成一些代码并找到以下函数,我不明白。什么是hintContainer,它抓取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();
});
}
UPDATE HTML Snippet,这是信息框:
<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 :(得分:0)
它使用类“userHintPanel”抓取所有元素,并在关闭文本容器之前添加一些内容,然后显示所有准备好的userHintPanels
有一件事:
var closeText = hintContainer.find('div.closeTextContainer'); is a bit strange.
它定位的内容如下:
<div class="closeTextContainer">Panel x Close</div>
但是在你的代码中它不会抓取文本,而是元素本身。开发商是否意味着这个?
var closeText = hintContainer.find('div.closeTextContainer').text();
如果它真的打算抓取元素,最好将var重命名为'closeTextElement',以便更好地理解代码。
另一个奇怪的事情:
var hintContent = hintContainer.next();
这将导致在最后一个userHintPanel中,hintContent为'undefined'。这是打算吗?
另一个非常重要的事情:
userHintPanel的父级是iFrame吗?如果是这种情况,则以下语句在Safari中肯定会失败:
hintContainer.parent()
您应该得到的错误是:SCRIPT5022:DOM例外:HIERARCHY_REQUEST_ERR(3)