Javascript 如何将html实体与jQuery进行比较
我有以下html代码:Javascript 如何将html实体与jQuery进行比较,javascript,jquery,html-entities,Javascript,Jquery,Html Entities,我有以下html代码: <h3 id="headerid"><span onclick="expandCollapse('headerid')">⇑</span>Header title</h3> 我的函数总是沿着else路径运行。如果我制作一个javacript:alert ofarrow变量,我将得到一个表示为箭头的html实体。我如何告诉jQuery将arrow变量解释为字符串而不是html 看看效果 这是我之前玩过的类似
<h3 id="headerid"><span onclick="expandCollapse('headerid')">⇑</span>Header title</h3>
我的函数总是沿着else路径运行。如果我制作一个javacript:alert ofarrow
变量,我将得到一个表示为箭头的html实体。我如何告诉jQuery将arrow
变量解释为字符串而不是html 看看效果
这是我之前玩过的类似游戏
HTML:
也许你没有得到一个精确的匹配,因为浏览器是下套管的实体或东西。尝试使用克拉(^)和小写字母“v”进行测试
编辑-我的第一个理论完全错误。解析HTML时,JQuery在DOM中看到的是一个向上的双箭头()⇑"), 不是实体引用。因此,在Javascript代码中,您应该测试
“⇑“
或”\u21d1“
。此外,您需要更改要切换到的内容:
function expandCollapse(id) {
var arrow = $("#"+id+" span").html();
if(arrow == "\u21d1") {
$("#"+id+" span").html("\u21d3");
} else {
$("#"+id+" span").html("\u21d1");
}
}
如果您对
箭头发出警告,它会返回什么?它会返回您匹配的确切字符串吗?如果您得到的是实际字符⇓'代码>和'⇑'代码>您可能需要将其与“\u21D1”
和“\u21D3”
匹配
此外,您可能希望尝试和以及和因为并非所有浏览器都支持这些实体
更新:下面是一个完全有效的示例:
使用类来表示量程的当前状态。
html可以如下所示
<h3 id="headerId"><span class="upArrow">⇑</span>Header title</h3>
这可能不是最好的方法,但它应该会起作用。我没有对它进行严格的测试当我查看警报窗口时,我确实看到了一个“向上箭头”"。是否有关于此主题的进一步讨论,这里的答案没有解决我的问题,这与原始问题相同。请参阅我对工作示例所做的更新。您将希望使用您使用的确切箭头的unicode值来更新8657和8659。怪,成功了。谢谢。这感觉像是一个黑客,是否有错误ason为什么这么棘手?顺便说一句,我对stackoverflow社区还是相当陌生的,所以如果所有这些讨论都不合适,我很抱歉应该转移到一个新问题上来。
$("#myStatic").bind("click", function(){
$("#myNewTxt").val($("#myStatic").text());
$("#myStatic,#myEdit").toggle();
});
$("#myOk").click(function(){
$("#myStatic").text($("#myNewTxt").val());
$("#myStatic,#myEdit").toggle();
});
$("#myX").click(function(){
$("#myStatic,#myEdit").toggle();
});
function expandCollapse(id) {
var arrow = $("#"+id+" span").html();
if(arrow == "\u21d1") {
$("#"+id+" span").html("\u21d3");
} else {
$("#"+id+" span").html("\u21d1");
}
}
window.expandCollapse = function (id) {
var $arrowSpan = $("#" + id + " span"),
arrowCharCode = $arrowSpan.text().charCodeAt(0);
// 8659 is the unicode value of the html entity
if (arrowCharCode === 8659) {
$arrowSpan.html("⇑");
} else {
$arrowSpan.html("⇓");
}
// one liner:
//$("#" + id + " span").html( ($("#" + id + " span").text().charCodeAt(0) === 8659) ? "⇑" : "⇓" );
};
<h3 id="headerId"><span class="upArrow">⇑</span>Header title</h3>
$( '.upArrow, .downArrow' ).click( function( span ) {
if ( span.hasClass( 'upArrow' ) )
span.text( "⇓" );
else
span.text( "⇑" );
span.toggleClass( 'upArrow' );
span.toggleClass( 'downArrow' );
} );