jQuery触发器,当<li>添加到<ul>
jQuery trigger to fire a method when a <li> is added to <ul>
我有一个PHP页面,使用flush()
和ob_flush()
向浏览器输出进度。页面正在输出一个样式化的<ul class="progresslog">
,其中各个<li class="{success|warning|error}">
元素正在刷新到浏览器。
我希望任何成功被隐藏,但任何错误显示。目前,任何错误都将在成功的进度通知中"丢失"。这很容易实现,使用<li>
上的不同类和一些jQuery .slideUp()
和.slideDown()
方法来显示成功,如果用户希望看到它们。
然而,假设进度成功,则不会显示任何内容给用户,用户也不会关心是否有进度。我想要一个摘要链接文本更新,因为额外的<li>
被添加到列表中,以显示22 success notifications
的内容。我希望这个数字在接收到输出时不断攀升。
我有代码来更新<a id="progresslogtoggle">
元素中包含的文本。它看起来像这样:
function updateProgress()
{
var count = $('.progresslog .success').length;
var warnings = $('.progresslog .warning').length;
var errors = $('.progresslog .error').length;
if (count > 0)
{
$('#progresslogtoggle').html ('Show ' + count + ' success notice' + (count != 1 ? 's' : '') + '. (' + warnings + ' warning' + (warnings != 1 ? 's' : '') + ' and ' + errors + ' error' + (errors != 1 ? 's' : '') + ' already shown)');
}
else
{
$('#progresslogtoggle').html ('There are no success notices to show! (' + warnings + ' warning' + (warnings != 1 ? 's' : '') + ' and ' + errors + ' error' + (errors != 1 ? 's' : '') + ' already shown)');
}
}
目前,一旦列表完成并添加了最终的</ul>
,我还添加了一个JavaScript片段来调用这个updateProgress()
函数。
然而,我想有更新的项目被添加到列表中的链接。我试过了:
$('.progresslog').on ('change', updateProgress());
,但是它似乎没有将添加子列表注册为更改列表。
我该如何解决这个问题?
更新:
PHP代码(大大简化,但足以说明这一点):
echo "<a href='"javascript:void(0);'" id='"progresslogtoggle'">Please wait...</a></p>";
echo '<ul class="progresslog">';
// JS, as above, goes here, including an initial call to the function.
for ($i = 0; $i < 1000; $i ++)
{
// some lengthy process that takes time
sleep (1); // NOT REAL CODE!
echo '<li class="';
echo ($i % 5 == 0) ? 'warning' : 'success';
echo '">Notice ' . $i . '</li>';
flush ();
@ob_flush ();
}
echo "</ul>";
echo "<script type='"text/javascript'">updateProgress();</script>";
免责声明:我意识到使用不完整的DOM是不好的,我不想在这里争论这个问题。
尝试使用MutationObserver
,观察ul
元素的childList
。
change方法只对输入元素有效。对于DOM更改,您可以使用以下命令:
$(".progresslog").bind("DOMSubtreeModified", function() {
alert("list changed");
});
相关文章:
- 在验证器中添加自定义规则以检查<ul>具有元素
- 将列表元素动态添加到ul元素中
- ul添加任何地方都没有使用的附加类
- Jquery将css类添加到父级<ul>元素
- 在转换后的 UL 列表中添加选择选项
- 使用jquery在ul菜单中添加li dynamic
- 在ul后面添加一个表单
- 使用appendchild或其他方法向ul添加html代码而不是纯文本
- 如何将Class添加到ul li
- Javascript 使用 array 将 li 添加到 ul
- 从 ul javascript 中添加/删除
- 元素
- 如何将现有 ul 的所有 li 添加到另一个 ul 的底部,基于他们的 css 类
- 将 ul 添加到现有 UL 中的 Li 元素
- 将活动类添加到导航中的 ul 列表中
- 将 li 添加到 ul 并查找是否存在
- 从 UL 中删除以编程方式添加的 LI
- 我已经在我的ul中添加了一个li,虽然它可以工作,但它会导致错误
- 动态地在li元素之后添加ul元素
- 添加UL的标记下面的地图
- 如何使用jQuery添加ul元素自定义事件