下面的代码是删除它找到的第一个div而不是目标div。
的jQuery
// Auto Remove PROMPT Notice Messages
(function($){
$(document).ready(function() {
$("[AutoHide]").each(function() {
if (!isNaN($(this).attr("AutoHide"))) {
eval("setTimeout(function() {jQuery('#" + this.id + "').hide();}, " + parseInt($(this).attr('AutoHide')) * 800 + ");");
}
});
});
})(jQuery);
HTML (或者至少,相关区域看起来像这样)
<div id="notify" class="infomsg">
<p><b>TIP:</b> Some message that should be prompted.
<input class="close msgbutton" type="button" onclick="deleteline(this)" value="[X]" />
</div>
<div id="notify" AutoHide="5" class="successmsg">
<p><b>SUCCESS: </b> User form processing was successful!</p>
<input class="close msgbutton" type="button" onclick="deleteline(this)" value="[X]" />
</div>
现在我不明白为什么jQuery函数没有使用AutoHide属性删除div,而是删除没有(具有id“notify”)的div。
我认为罪魁祸首在于代码的这一部分:
jQuery('#" + this.id + "').hide();
答案 0 :(得分:1)
改为使用
(function($){
$(document).ready(function() {
$("[AutoHide]").each(function() {
var that = this;
if (!isNaN($(that).attr("AutoHide"))) {
setTimeout(function() {jQuery(that).hide();}, parseInt($(that).attr('AutoHide')) * 800 );
}
});
});
})(jQuery);
我建议不要使用相同的ID
答案 1 :(得分:0)
您使用相同的ID两次。按规则,HTML元素的id应该是唯一的。
当你使用它时:jQuery('#" + this.id + "').hide();
“this.id”指的是“通知”。但是它隐藏了第一个div,因为这是用id="notify"
渲染的第一个div,所以这是它首先找到的那个。
尝试使用唯一ID:
<div id="info_notify" class="infomsg"><p><b>TIP:</b> Some message that should be propmted.<input class="close msgbutton" type="button" onclick="deleteline(this)" value="[X]" /></div>
<div id="success_notify" AutoHide="5" class="successmsg"><p><b>SUCCESS: </b> User form processing was successfull!</p> <input class="close msgbutton" type="button" onclick="deleteline(this)" value="[X]" /></div>