使用jQuery获取整个开始标记
假设HTML是:使用jQuery获取整个开始标记,jquery,Jquery,假设HTML是: <div id="page" class="someclass"> more divs </div> 然后将返回: <div id="page" class="someclass"> 如果您说不想用jQuery包装它,您可以使用: var ele = document.getElementById('page'); 或者,您可以继续使用jQuery并使用: var ele = $("page").get(0); $(“page”)返回
<div id="page" class="someclass"> more divs </div>
然后将返回:
<div id="page" class="someclass">
如果您说不想用jQuery包装它,您可以使用:
var ele = document.getElementById('page');
或者,您可以继续使用jQuery并使用:
var ele = $("page").get(0);
$(“page”)
返回一个数组,.get(0)
返回该数组的第一个元素您可以始终使用DOM元素属性outerHTML
$(selector)[0].outerHTML
它只获取选择的第一个DOM元素,然后使用DOM属性outerHTML获取html
$(selector)[0].outerHTML
编辑如果您不想要内容,而只想要封闭标签,则可以执行此操作
$.fn.tag = function(){
return this[0].outerHTML.replace(this.html(),"");
};
或者如果您只需要开始标记
$.fn.startTag = function(){
return this[0].outerHTML.split(this.html())[0];
};
$("#page").startTag();
然后,您可以像这样使用它来获取封闭标记
$("#page").tag();
或者像这样获得开始标签
$.fn.startTag = function(){
return this[0].outerHTML.split(this.html())[0];
};
$("#page").startTag();
请看这里:
您需要获取您的元素,克隆它,将其放入DIV中,然后获取所述DIV的HTML
alert( $('<div>').append($('#page').clone()).remove().html() )
alert($('').append($('#page').clone()).remove().html())
如果不需要任何子元素或内容,请在克隆后首先清除这些内容:
alert( $('<div>').append($('#page').clone().html('')).remove().html() )
alert($('').append($('#page').clone().html('').remove().html())
您可以定义一个jQuery方法,该方法返回outerHTML
属性
$.fn.tag = function() {
return this.first().clone().empty().prop('outerHTML');
}
$('#page').tag();
要删除结束标记,请执行以下操作:
$.fn.tag = function() {
var r = this[0].nodeName.toLowerCase();
return this.first()
.clone()
.empty()
.prop('outerHTML')
.replace('</'+r+'>', '');
}
$.fn.tag=函数(){
var r=this[0].nodeName.toLowerCase();
返回这个
.clone()
.empty()
.prop('outerHTML')
.替换(“,”);
}
对于多个选定元素,以下命令将返回一个数组:
$.fn.tag = function() {
return this.map(function() {
var r = this.nodeName.toLowerCase();
return $(this).clone()
.empty()
.prop('outerHTML')
.replace('</'+r+'>', '');
}).get();
}
$.fn.tag=函数(){
返回此.map(函数(){
var r=this.nodeName.toLowerCase();
返回$(this.clone())
.empty()
.prop('outerHTML')
.替换(“,”);
}).get();
}
您可以这样做:
首先,获取包含元素,然后获取该元素的html文本。
然后,将文本拆分为
,得到所需的文本
仅当页面
div之前的包含元素中没有元素时,此操作才有效。要解决此问题,您可以使用简单元素(div?)包装页面
div,它将起作用
JQuery:
$(function(){
var elem = $("#page").parent().html();
var arr = elem.split('>');
$("#result").text(arr[0] + " >");
});
<div id="cont">
<div id="page" class="someclass"> more divs </div>
</div>
<br />
Result: <br />
<div id="result">
</div>
HTML:
$(function(){
var elem = $("#page").parent().html();
var arr = elem.split('>');
$("#result").text(arr[0] + " >");
});
<div id="cont">
<div id="page" class="someclass"> more divs </div>
</div>
<br />
Result: <br />
<div id="result">
</div>
更多divs
结果:
只需根据@Rune-answer执行此操作:
var outer = $("#page")[0].outerHTML;
var inner = $("#page")[0].innerHTML;
var result = outer.replace(inner,"");
console.log(result)
使用普通的旧JavaScript进行简单的字符串操作。找到第一个闭合角括号,然后将所有东西都放到该点
function getElementStartTag(element) {
var html = element.outerHTML;
var index = html.indexOf(">");
var startTag = html.substring(0, index + 1);
return startTag;
}
示例
函数getElementStartTag(元素){
var html=element.outerHTML;
var index=html.indexOf(“>”);
var startTag=html.substring(0,索引+1);
返回startTag;
}
var元素=document.getElementById(“testSubject”);
var startTag=getElementStartTag(元素);
警报(startTag);
//输出:
忽略此内容。
$.fn.startTag=函数(){
//这将作为备份
var currennerHTML=this.html();
//您需要有一些唯一的字符串作为内部html,以便使用该字符串进行拆分,因为在某些情况下,内部html可能为空,或者可能有一些公共字符串会妨碍正确拆分
var uniqueString=performance.now();
this.html(uniqueString);
const startTag=this[0].outerHTML.split(uniqueString)[0];
this.html(currennerHTML);
返回startTag;
};你到底想做什么?他想得到整个标签,就像他说的。看这里:@JaredEitnier他想得到开始tag@RuneFS对贾里德公平地说,这一澄清是在最初的问题公布之后作出的您好,谢谢,但您的解决方案会返回整个标记的HTML。您好,谢谢,但这会返回整个DIV的HTML,与$('#page').HTML()相同。我希望它只返回“”。@P.Henderson你也不知道结束标记是什么?@DA是的,但现在它也返回了标记(并考虑到评论而不是内容是的,没错。我想要的唯一输出是“”。+1,用于向我介绍所有主要浏览器都支持的outerHTML:您好,谢谢,但这也将返回整个DIV(更多DIV),而不仅仅是标记及其属性。@P.Henderson所以您不需要子元素…只需要此项?是的,现在您非常接近。是否还要删除结束标记?@P.Henderson此时,您必须将其作为字符串处理。可能需要使用正则表达式。我建议您也许可以解释一下你的最终目标就在这里。如果我们对你所做的有更好的了解,也许会有更好的方式来完成你所追求的。