使用jQuery获取整个开始标记

使用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”)返回

假设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”)
返回一个数组,
.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;

};