您可以通过向 jQuery 函数传递原始 HTML 字符串来动态创建 HTML 标记。
<!DOCTYPE html> <html lang="en"> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function($){ alert($('<div><a></a></div>').get(0).nodeName); // Alerts "DIV" alert($('<div><a></a></div>').length); // Alerts "1" <div> is in the wrapper set alert($('<div><a></a></div><div><a></a></div>').length); // Alerts "2" <div> are in the set })(jQuery); </script> </body> </html>
需要注意的是,使用 jQuery 函数创建 DOM 结构时,只有结构中的根元素会添加到包装器集中。在前面的代码示例中,<div>
元素将是包装器集中的唯一元素。
一旦创建了 HTML 结构中的任何元素,我们就可以使用 find()
方法对其进行操作。
<!DOCTYPE html> <html lang="en"> <body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { $('<div><a></a></div>') .find('a') .text('jQuery') .attr('href', 'http://www.jquery.com'); })(jQuery); </script> </body> </html>
对新创建的 HTML 进行操作后,还可以使用 jQuery 的操作方法之一将其添加到 DOM 中。下面我们使用 appendTo()
方法将标记添加到页面。
<!DOCTYPE html> <html lang="en"> <body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function($){ $('<div><a></a></div>') .find('a') .text('jQuery') .attr('href', 'http://www.jquery.com') .end().appendTo('body'); // end() is used to exit the find() method })(jQuery); </script> </body> </html>
注释:不包含属性的简单元素 - 例如$('<div>
document.createElement
DOM 方法创建,而所有其他情况都依赖于 innerHTML
属性。事实上,您可以直接向 jQuery 函数传递使用 document.createElement
-e.g 创建的元素。 $(document.createElement('div'))
。
传递给 jQuery 的 HTML 字符串不能包含在 <div>
元素内可能被视为无效的元素。
传递给 jQuery 函数的 HTML 字符串必须格式正确。
传递 jQuery HTML 时,您应该打开和关闭所有 HTML 元素。不这样做可能会导致错误,主要是在 Internet Explorer 中。为了安全起见,请始终关闭 HTML 元素并避免编写快捷 HTML - 例如$(<div />)
.
您可以通过将元素传递给 index()
方法来确定包装集中元素的索引。例如,假设您有一个包含网页中所有 index()
方法来确定包装集中元素的索引。例如,假设您有一个包含网页中所有 <div>
元素的包装集,并且您想知道最后一个 <div>
元素的包装集,并且您想知道最后一个
<!DOCTYPE html> <html lang="en"> <body> <div>0</div> <div>1</div> <div>2</div> <div>3</div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { // Alerts "3" alert($('div').index($('div:last'))); })(jQuery); </script> </body> </html>
index()
的使用并没有真正击中要害,直到我们考虑如何将它与事件一起使用。例如,通过点击下面代码中的 <div>
元素,我们可以将点击的 <div>
元素(使用关键字 this
)传递给 index()
方法来确定点击的 <div>
index()
的使用并没有真正击中要害,直到我们考虑如何将它与事件一起使用。例如,通过点击下面代码中的 元素,我们可以将点击的 this
)传递给 index()
方法来确定点击的 <!DOCTYPE html> <html lang="en"> <body> <div id="nav"> <div>nav text</div> <div>nav text</div> <div>nav text</div> <div>nav text</div> </div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { // Alert index of the clicked div amongst all div's in the wrapper set $('#nav div').click(function () { alert($('#nav div').index(this)); // or, a nice trick... alert($(this).prevAll().length); }); })(jQuery); </script> </body> </html>
text()
摸索 text() 方法
<!DOCTYPE html> <html lang="en"> <body> <div>1,</div> <div>2,</div> <div>3,</div> <div>4</div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { alert($('div').text()); // Alerts "1,2,3,4" })(jQuery); </script> </body> </html>
replace()
使用正则表达式更新或删除字符
使用 JavaScript html()
方法结合一些 jQuery 功能,我们可以非常轻松地更新或删除元素中包含的文本中的任何字符模式。
<!DOCTYPE html> <html lang="en"> <body> <p> I really hate using JavaScript. I mean really hate it! It is the best twister ever! </p> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { var $p = $('p'); // Replace 'hate' with 'love' $p.text($p.text().replace(/hate/ig, 'love')); // Remove 'twister' and replace it with nothing $p.text($p.text().replace(/twister/ig, '')); // Keep in mind that text() returns a string, not the jQuery object. // That is how the replace() string method is chained after using text() })(jQuery); </script> </body> </html>
.contents()
方法可用于查找所有子元素节点,包括元素内部包含的文本节点。然而,有一个问题。如果检索到的内容仅包含文本节点,则所选内容将作为单个文本节点放置在包装器集中。但是,如果您要检索的内容在文本节点中包含一个或多个元素节点,则 .contents()
摸索 .contents() 方法
.get(0).nodeValue
提取值。 contents()
方法对于提取文本节点值很方便。可以使用 contents()
方法将包含文本节点和元素节点。检查下面的代码以掌握这个概念。
<!DOCTYPE html> <html lang="en"> <body> <p>I love using jQuery!</p> <p>I love <strong>really</strong> using jQuery!</p> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { // Alerts "I love using jQuery!" because no HTML elements exist alert($('p:first').contents().get(0).nodeValue); // Alerts "I love" alert($('p:last').contents().get(0).nodeValue); // Alerts "really" but is an HTML element, not a text node alert($('p:last').contents().eq(1).text()); // Alerts "using jQuery!" alert($('p:last').contents().get(2).nodeValue); })(jQuery); </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <body> <p>jQuery gives me <strong>more <span>power</span></strong> than any other web tool! </p> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function($){ $('p') .find('*') // Select all nodes .andSelf() // Include <p> .contents() // Grab all child nodes, including text .filter(function() {return this.nodeType == Node.TEXT_NODE;}) // Remove non-text nodes .each(function (i, text) { alert(text.nodeValue) }); // Alert text contained in wrapper set })(jQuery); </script> </body> </html>
remove()
使用remove()不会从包装集中删除元素
当您使用 remove()
时,来自 DOM 的 DOM 片段已删除的 DOM 结构中包含的元素仍然包含在包装集中。您可以删除一个元素,对该元素进行操作,然后将该元素实际放回到 DOM 中,所有这些都在单个 jQuery 链中。
<!DOCTYPE html> <html lang="en"> <body> <div>remove me</div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function ($) { $('div') .remove().html('<a href="http://www.jQuery.com">jQuery</a>') .appendTo('body'); })(jQuery); </script> </body> </html>
以上是简洁易懂的jQuery:jQuery操作的详细内容。更多信息请关注PHP中文网其他相关文章!