在这种情况下,为什么 jQuery 找不到包含显示数学的 div
Why isn't jQuery finding the div containing display mathematics in this case
我正在尝试构建一个 KaTeX 在网页上呈现一堆数学的最小工作示例。为此,我整理了以下 HTML 文件:
$(".inline-math").each(
function(element) {
console.log("Rivimatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
$(".display-math").each(
function(element) {
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
<p>Tässä on näyttömuotoinen yhtälö:</p>
<div class="display-math">
F(b) - F(a) = \int_a^b f(x) \,\mathrm d x
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.css" integrity="sha384-dbVIfZGuN1Yq7/1Ocstc1lUEm+AT+/rCkibIcC/OmWo5f0EA48Vf8CytHzGrSwbQ" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.js" integrity="sha384-2BKqo+exmr9su6dir+qCw08N2ZKRucY4PrGQPPWU1A7FtlCGjmEGFqXCv5nyM5Ij" crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
数学没有渲染,但是KaTeX下载成功,所以不是这个原因:
但是,jQuery 并未发现包含数学的实际元素:
这是为什么?我希望包含数学的 div
至少打印到控制台。不过,为什么不打印呢?
P.S。
我还没有使用插件提供的自动渲染功能。在我把事情复杂化之前,我想让它在一个非常基本的层面上工作。
说明
只是你使用了jQuery的$(selector).each()
函数不正确。
来自文档:
Type: Function( Integer index, Element element )
jQuery 的 .each
回调函数将 index 作为 [=41],而不是遵循本机 Array.prototype.forEach
实现=]first 参数,element 作为 second 参数。
您需要做的很简单:
$(".display-math").each(
function(i, element) {
// ----^ -^
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML,element);
}
);
或者,您可以只使用 VanillaJS:
document.querySelectorAll('.display-math').forEach(function(element){
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML,element);
});
工作代码
$(".inline-math").each(
function(i, element) {
console.log("Rivimatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
$(".display-math").each(
function(i, element) {
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
<p>Tässä on näyttömuotoinen yhtälö:</p>
<div class="display-math">
F(b) - F(a) = \int_a^b f(x) \,\mathrm d x
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.css" integrity="sha384-dbVIfZGuN1Yq7/1Ocstc1lUEm+AT+/rCkibIcC/OmWo5f0EA48Vf8CytHzGrSwbQ" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.js" integrity="sha384-2BKqo+exmr9su6dir+qCw08N2ZKRucY4PrGQPPWU1A7FtlCGjmEGFqXCv5nyM5Ij" crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
我正在尝试构建一个 KaTeX 在网页上呈现一堆数学的最小工作示例。为此,我整理了以下 HTML 文件:
$(".inline-math").each(
function(element) {
console.log("Rivimatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
$(".display-math").each(
function(element) {
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
<p>Tässä on näyttömuotoinen yhtälö:</p>
<div class="display-math">
F(b) - F(a) = \int_a^b f(x) \,\mathrm d x
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.css" integrity="sha384-dbVIfZGuN1Yq7/1Ocstc1lUEm+AT+/rCkibIcC/OmWo5f0EA48Vf8CytHzGrSwbQ" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.js" integrity="sha384-2BKqo+exmr9su6dir+qCw08N2ZKRucY4PrGQPPWU1A7FtlCGjmEGFqXCv5nyM5Ij" crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>
数学没有渲染,但是KaTeX下载成功,所以不是这个原因:
但是,jQuery 并未发现包含数学的实际元素:
这是为什么?我希望包含数学的 div
至少打印到控制台。不过,为什么不打印呢?
我还没有使用插件提供的自动渲染功能。在我把事情复杂化之前,我想让它在一个非常基本的层面上工作。
说明
只是你使用了jQuery的$(selector).each()
函数不正确。
来自文档:
Type: Function( Integer index, Element element )
jQuery 的 .each
回调函数将 index 作为 [=41],而不是遵循本机 Array.prototype.forEach
实现=]first 参数,element 作为 second 参数。
您需要做的很简单:
$(".display-math").each(
function(i, element) {
// ----^ -^
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML,element);
}
);
或者,您可以只使用 VanillaJS:
document.querySelectorAll('.display-math').forEach(function(element){
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML,element);
});
工作代码
$(".inline-math").each(
function(i, element) {
console.log("Rivimatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
$(".display-math").each(
function(i, element) {
console.log("Näyttömatikkaa: " + element.innerHTML);
katex.render(element.innerHTML, element);
}
);
<p>Tässä on näyttömuotoinen yhtälö:</p>
<div class="display-math">
F(b) - F(a) = \int_a^b f(x) \,\mathrm d x
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.css" integrity="sha384-dbVIfZGuN1Yq7/1Ocstc1lUEm+AT+/rCkibIcC/OmWo5f0EA48Vf8CytHzGrSwbQ" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- The loading of KaTeX is deferred to speed up page rendering -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.js" integrity="sha384-2BKqo+exmr9su6dir+qCw08N2ZKRucY4PrGQPPWU1A7FtlCGjmEGFqXCv5nyM5Ij" crossorigin="anonymous"></script>
<!-- To automatically render math in text elements, include the auto-render extension: -->
<script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/contrib/auto-render.min.js" integrity="sha384-kWPLUVMOks5AQFrykwIup5lo0m3iMkkHrD0uJ4H5cjeGihAutqP0yW0J6dpFiVkI" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script>