Javascript jQuery addClass()在bootstraps中显示.bs.tab事件
我在Bootstrap的.tab窗格中有两个带有svg图形的对象。 在这些SVG中,我希望对元素进行样式化,从而使用jquery添加css类。在调试时,我可以看到这些类仍然正确地添加到$elem.classList中,但没有添加到svg中的elements类属性中 这是添加类的代码。我唯一需要改变的是前5行的位置,在引导面板中工作Javascript jQuery addClass()在bootstraps中显示.bs.tab事件,javascript,jquery,css,twitter-bootstrap,svg,Javascript,Jquery,Css,Twitter Bootstrap,Svg,我在Bootstrap的.tab窗格中有两个带有svg图形的对象。 在这些SVG中,我希望对元素进行样式化,从而使用jquery添加css类。在调试时,我可以看到这些类仍然正确地添加到$elem.classList中,但没有添加到svg中的elements类属性中 这是添加类的代码。我唯一需要改变的是前5行的位置,在引导面板中工作 $("a[data-toggle='tab']").on('shown.bs.tab', function (e) { e.preventDefault();
$("a[data-toggle='tab']").on('shown.bs.tab', function (e) {
e.preventDefault();
e.stopPropagation();
var whichObj = e.target.href.slice(-5);
var doc = $(".raumplan",whichObj)[0];
var svg = doc.contentDocument.documentElement;
var refs = new XMLHttpRequest();
refs.open("GET", "/RaumRefs", true);
refs.onreadystatechange = function (e) {
if (refs.readyState === 4 && refs.status === 200) {
raumReferat = JSON.parse(refs.responseText);
for (var i = 0; i < raumReferat.length; i++) {
var id = raumReferat[i].raum.replace(/\./g,'\\.');
if (id != "") {
var elem = $("#" + id, svg);
elem.addClass("ref" + raumReferat[i].referat+" buero");
if (raumReferat[i].besetzt == true) {
elem.addClass("besetzt");
}
}
}
}
}
refs.onerror = function (e) {
console.error(refs.statusText);
}
refs.send(null);
}
$([a[data toggle='tab'])。on('show.bs.tab',function(e){
e、 预防默认值();
e、 停止传播();
var whichObj=e.target.href.slice(-5);
var doc=$(“.raumplan”,whichObj)[0];
var svg=doc.contentDocument.documentElement;
var refs=新的XMLHttpRequest();
参考打开(“GET”、“/RaumRefs”、true);
refs.onreadystatechange=函数(e){
if(refs.readyState==4&&refs.status==200){
raumReferat=JSON.parse(refs.responseText);
对于(变量i=0;i
它正确地从正确的svg中按id选择元素并添加正确的类。但是,为什么它对没有面板的同类没有影响呢
其他信息:
这只发生在chrome浏览器中,ie和firefox都正常工作。因为id是唯一的,所以你不必在选择器中使用上下文。@Jai:我以前也这么认为,但我需要使用上下文,因为否则js在嵌入的svg中找不到id,因为它是自己的文档