Uncaught Error: Syntax error, unsupported pseudo
Uncaught Error: Syntax error, unsupported pseudo
我正在尝试修复我的代码中的一个非常奇怪的错误。我有以下创建 HTML 的代码。它在单击 div 时调用 RemoveCompareOffer()
函数。此函数适用于所有类型的 id
除了一个 id ADSL2:Bundles
创建HTML的函数:
function AddCompareOfferInCompareBox()
{
$('.SelectedOffer').each(function () {
innerHtml = innerHtml + '<div class="compare-box"> <div class="compare-close"><span class="closed" onclick="RemoveCompareOffer(\''+ $(this).attr("id") + '\')"><i class="fa fa-times"></i></span></div>'
+ '<div class="compare-logo"><img src="' + $(this).attr("imagelink") + '" /></div><p>' + $(this).attr("offername") + '</p>'
+ '<input type="button" value="View Details" class="viewbtn" onclick="CallOfferRenderAction(\'' + $(this).attr("offercode") + '\',\'' + $(this).attr("providercode") + '\')" /></div>';
});
$(".AddCompareOfferByMe").html(innerHtml);
}
在这个函数上当它被这样调用时RemoveCompareOffer('ADSL2:Bundles')
function RemoveCompareOffer(id) {
$('#' + id + '.SelectedOffer').removeClass("SelectedOffer").addClass("NotSelected").attr('checked', false);
AddCompareOfferInCompareBox();
SetCompareBoxsState();
}
它抛出错误:
jquery-1.11.3.min.js:3 Uncaught Error: Syntax error, unrecognized
expression: unsupported pseudo: Bundles
可能是什么原因?
#ADSL2:Bundles.SelectedOffer
是一个选择器,表示要找到以下元素:
有id
ADSL2
匹配伪class:Bundles
有classSelectedOffer
没有 CSS 伪 class :Bundles
也没有 jQuery 添加自己的;在您的情况下,它是 ID 的一部分。因此,您必须转义 :
或使用属性匹配语法。
转义:
var id = "ADSL2:Bundles";
$('#' + id.replace(/:/g, "\:") + '.SelectedOffer').css("color", "blue");
<div id="ADSL2:Bundles" class="SelectedOffer">Escaping</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
使用属性匹配语法:
var id = "ADSL2:Bundles";
$('[id="' + id + '"].SelectedOffer').css("color", "blue");
<div id="ADSL2:Bundles" class="SelectedOffer">Escaping</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
我正在尝试修复我的代码中的一个非常奇怪的错误。我有以下创建 HTML 的代码。它在单击 div 时调用 RemoveCompareOffer()
函数。此函数适用于所有类型的 id
除了一个 id ADSL2:Bundles
创建HTML的函数:
function AddCompareOfferInCompareBox()
{
$('.SelectedOffer').each(function () {
innerHtml = innerHtml + '<div class="compare-box"> <div class="compare-close"><span class="closed" onclick="RemoveCompareOffer(\''+ $(this).attr("id") + '\')"><i class="fa fa-times"></i></span></div>'
+ '<div class="compare-logo"><img src="' + $(this).attr("imagelink") + '" /></div><p>' + $(this).attr("offername") + '</p>'
+ '<input type="button" value="View Details" class="viewbtn" onclick="CallOfferRenderAction(\'' + $(this).attr("offercode") + '\',\'' + $(this).attr("providercode") + '\')" /></div>';
});
$(".AddCompareOfferByMe").html(innerHtml);
}
在这个函数上当它被这样调用时RemoveCompareOffer('ADSL2:Bundles')
function RemoveCompareOffer(id) {
$('#' + id + '.SelectedOffer').removeClass("SelectedOffer").addClass("NotSelected").attr('checked', false);
AddCompareOfferInCompareBox();
SetCompareBoxsState();
}
它抛出错误:
jquery-1.11.3.min.js:3 Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: Bundles
可能是什么原因?
#ADSL2:Bundles.SelectedOffer
是一个选择器,表示要找到以下元素:
有
id
ADSL2
匹配伪class
:Bundles
有class
SelectedOffer
没有 CSS 伪 class :Bundles
也没有 jQuery 添加自己的;在您的情况下,它是 ID 的一部分。因此,您必须转义 :
或使用属性匹配语法。
转义:
var id = "ADSL2:Bundles";
$('#' + id.replace(/:/g, "\:") + '.SelectedOffer').css("color", "blue");
<div id="ADSL2:Bundles" class="SelectedOffer">Escaping</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
使用属性匹配语法:
var id = "ADSL2:Bundles";
$('[id="' + id + '"].SelectedOffer').css("color", "blue");
<div id="ADSL2:Bundles" class="SelectedOffer">Escaping</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>