本文将带您了解关于php–添加标题在动态创建表单字段Jquery.insertBefore之前的新内容,同时我们还将为您解释php设置标题的相关知识,另外,我们还将为您提供关于html–PHPDomN
本文将带您了解关于php – 添加标题在动态创建表单字段Jquery .insertBefore之前的新内容,同时我们还将为您解释php设置标题的相关知识,另外,我们还将为您提供关于html – PHP DomNode-> insertBefore()、insertBefore()与PHP DOM无法正常工作、insertbefore和before的区别、javascript – jQuery – insertBefore()用于原始文本的实用信息。
本文目录一览:- php – 添加标题在动态创建表单字段Jquery .insertBefore之前(php设置标题)
- html – PHP DomNode-> insertBefore()
- insertBefore()与PHP DOM无法正常工作
- insertbefore和before的区别
- javascript – jQuery – insertBefore()用于原始文本
php – 添加标题在动态创建表单字段Jquery .insertBefore之前(php设置标题)
<script type="text/javascript"> $('<h5>Calculate Return</h5>').insertBefore('#price'); </script>
出于某种原因,这不起作用,任何人都可以想到为什么会这样.这是有问题的页面
http://www.theres-a-thought.com/client-yourdream/?page=property_submit
解决方法
您在无冲突模式下使用jquery,并且需要将代码包装在文档中.
<script type="text/javascript"> jQuery(document).ready(function() { jQuery('<h5>Calculate Return</h5>').insertBefore('#price'); }); </script>
跑这个;但是,对页面没有影响(从我可以看到).
以下代码有效,因为ID存在.这不是你想要完成的,但它应该让你开始.
<script type="text/javascript"> jQuery(document).ready(function() { jQuery('<h5>Calculate Return</h5>').insertBefore('#property_name'); }); </script>
html – PHP DomNode-> insertBefore()
我的目标是在每个h2标签之前插入一个元素.
为此,我正在使用:
$htmlString = "<h2>some html</h2>"; $DOM = new DOMDocument(); $DOM->loadHTML($htmlString); $itemTitles = $DOM->getElementsByTagName('h2'); for($i = 0; $i < $itemTitles->length; $i ++) { $helpNavigatorContents[] = $itemTitles->item($i)->nodeValue; $textBefore = new DOMNode( '<a name="'.$itemTitles->item($i)->nodeValue.'"></a>' ); $itemTitles->item($i)->parentNode->insertBefore( $textBefore,$itemTitles->item($i) ); } $htmlString = $DOM->saveHTML($DOM);
在这里我遇到了$textBefore的问题.当我将$textBefore声明为DOMText时,我可以在节点之前插入文本,但是当我尝试使用DOMNode时,我收到以下错误(Demo):
Warning: DOMNode::insertBefore(): Couldn’t fetch DOMNode
解决方法
假设您想要使用锚点添加所有H2元素,这是如何做到的:
libxml_use_internal_errors(true); $DOM = new DOMDocument(); $DOM->loadHTML($htmlString); $DOM->preserveWhiteSpace = false; foreach ($DOM->getElementsByTagName('h2') as $h2) { $a = $DOM->createElement('a'); $a->setAttribute('name',$h2->nodeValue); $h2->parentNode->insertBefore($a,$h2); } $DOM->formatOutput = true; echo $DOM->saveHTML();
演示http://codepad.org/N0dPcLwT
要将H2元素包装到A元素中,只需执行相同操作并添加即可
$a->appendChild($h2);
演示http://codepad.org/w7Hi0Bmz
insertBefore()与PHP DOM无法正常工作
<p>Second paragraph</p> <p>First paragraph</p> <p>Third paragraph</p>
我想用PHP DOM重新排列元素,把它变成这样的东西:
<p>First paragraph</p> <p>Second paragraph</p> <p>Third paragraph</p>
我尝试使用以下代码执行此操作:
$html = "<p>Second paragraph</p><p>First paragraph</p><p>Third paragraph</p>"; $dom = new domDocument; $dom->loadHTML( $html ); $dom->getElementsByTagName('p')->item(1)->insertBefore($dom->getElementsByTagName('p')->item(0));
但是当我使用时:
echo $dom->getElementsByTagName('p')->item(0)->nodeValue;
我明白了:
First paragraphSecond paragraph
结果,所以我想我在这里做错了.
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [,DOMNode $refnode ] ) refnode The reference node. If not supplied,newnode is appended to the children.
因此,由于您未指定引用节点,因此它会将其附加到子节点.您的代码将生成此HTML:
<html> <body> <p>First paragraph<p>Second paragraph</p></p> <p>Third paragraph</p> </body> </html>
你需要做的是在parentNode上执行insertBefore,参考第二段,如下所示:
$nodes = $dom->getElementsByTagName('p'); $nodes->item(0)->parentNode->insertBefore($nodes->item(1),$nodes->item(0)); echo $dom->saveHTML();
输出:
<html> <body> <p>First paragraph</p> <p>Second paragraph</p> <p>Third paragraph</p> </body> </html>
insertbefore和before的区别
insertbefore和before的区别:1、用法;2、参数;3、返回值;4、兼容性;5、性能;6、选择器;7、自动创建元素;8、错误处理;9、清理;10、链式调用;11、其他差异。详细介绍:1、用法,insertbefore是一个dom方法,可以直接在任何dom元素上调用,before是一个jquery方法,只能在jquery对象上调用;2、参数等等。
insertBefore和before都是在JavaScript中用于操作DOM元素的方法,但它们之间存在一些重要的区别。
insertBefore(newNode, referenceNode)是一个DOM方法,它用于在指定的参考节点之前插入一个新的节点。这个方法需要两个参数:新的节点(newNode)和参考节点(referenceNode)。
before(content, ...args)是一个jQuery方法,它用于在元素之前插入内容。这个方法接受两个参数:要插入的内容(content)和其他可选参数。
下面是对这两个方法的详细比较:
1、用法:
insertBefore是一个DOM方法,可以直接在任何DOM元素上调用。
before是一个jQuery方法,只能在jQuery对象上调用。
2、参数:
insertBefore接受两个参数:要插入的新节点和参考节点。新节点将被插入到参考节点之前。
before接受两个参数:要插入的内容和其他可选参数。要插入的内容可以是HTML字符串、DOM元素或jQuery对象。
3、返回值:
insertBefore返回插入的新节点。
before返回调用它的jQuery对象。对于链式调用,这是非常重要的。
4、兼容性:
insertBefore是DOM标准的一部分,因此在所有浏览器中都可用。
before是jQuery特有的方法,因此只能在支持jQuery的浏览器中使用。
5、性能:
insertBefore是原生的DOM操作,因此在处理大量DOM元素时,它的性能通常优于jQuery的before方法。
6、选择器:
insertBefore不接受CSS选择器作为参数,它只接受DOM元素或另一个节点作为参考节点。
before可以接受CSS选择器作为参数,这使得我们可以轻松地在匹配的元素之前插入内容。
7、自动创建元素:
insertBefore不会自动创建元素。如果参考节点不存在,那么新节点将不会被插入。
before会自动创建元素。如果目标元素不存在,它将会被创建出来,然后插入内容。
8、错误处理:
如果在尝试使用insertBefore时参考节点不存在,会抛出一个错误。
在尝试使用before时,如果目标元素不存在,它将会自动创建元素,不会有错误产生。
9、清理:
insertBefore不会自动清理或删除任何东西。你需要手动处理这些事情。
before会自动清理旧的内容并替换为新的内容。如果你提供了HTML字符串,它将会被转换为一个jQuery对象并插入到目标元素之前。如果提供了DOM元素或jQuery对象,它将会被移动到目标元素之前。如果提供了其他参数(如文本或函数),它将会被转换为一个HTML字符串并插入到目标元素之前。在所有情况下,旧的内容都会被自动删除和替换。
10、链式调用:
insertBefore不直接支持链式调用。你需要在一个单独的语句中调用它两次才能实现链式效果。例如:element.parentNode.insertBefore(newElement, element);。然而,你可以在一个单独的语句中调用两次来模拟链式效果。例如:element.parentNode.insertBefore(newElement, element).parentNode.insertBefore(anotherElement, element);。
before直接支持链式调用。你可以在一个语句中连续调用它来插入多个元素或内容。例如:element.before(content1).before(content2);。这会在元素之前连续插入两个内容。
11、其他差异:
insertBefore只接受一个参考节点,而before可以接受多个内容参数和一个参考节点参数(如果提供的话)。如果你只提供一个内容参数,那么它将会被插入到所有匹配的元素之前。如果你提供多个内容参数,它们将会被依次插入到匹配的元素之前。如果你还提供了一个参考节点参数,那么内容将会被插入到该参考节点之前(而不是所有匹配的元素之前)。
以上就是insertbefore和before的区别的详细内容,更多请关注php中文网其它相关文章!
javascript – jQuery – insertBefore()用于原始文本
我使用jQuery 1.11.2和jquery-migrate 1.2.1.这是我正在尝试做的简单示例:
https://jsfiddle.net/bek3wrug/
我想在页面上的某个元素之前插入一些文本(不完全包装到HTML标记中),jQuery只插入包含在HTML标记内的部分.
我不能使用prepend(),因为我不想在一些元素中插入它,我需要先插入它.
有没有办法让jQuery插入所有文本,不仅包装成HTML标签?
解决方法:
由于它包含textNode,因此需要使用jQuery.parseHTML
方法,该方法生成一组节点.否则它将被解释为选择器,因为没有使用字符串选择任何内容,所以不会发生任何事情.
$($.parseHTML("Raw text to insert. <span>Text inside span to insert. </span>")).insertBefore("#mySpan")
参见:Creating new elements using jQuery.
$($.parseHTML("Raw text to insert. <span>Text inside span to insert. </span>")).insertBefore("#mySpan")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv">
<span id="mySpan">Original text</span>
</div>
或者使用before()
方法.
$("#mySpan").before("Raw text to insert. <span>Text inside span to insert. </span>")
$("#mySpan").before("Raw text to insert. <span>Text inside span to insert. </span>")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv">
<span id="mySpan">Original text</span>
</div>
关于php – 添加标题在动态创建表单字段Jquery .insertBefore之前和php设置标题的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于html – PHP DomNode-> insertBefore()、insertBefore()与PHP DOM无法正常工作、insertbefore和before的区别、javascript – jQuery – insertBefore()用于原始文本等相关知识的信息别忘了在本站进行查找喔。
本文标签: