Javascript 如何找到由js动态创建的对象的类?
我有一个元素Javascript 如何找到由js动态创建的对象的类?,javascript,jquery,Javascript,Jquery,我有一个元素div,它是由js创建的,我想让它类化。 我尝试getElementsByClassName('lt-label')(它起作用),然后我想检查lt-label是否有类lt-online,以及页面上的另一个块是否为block。 我的代码: $(文档).ready(函数(){ if(document.getElementsByClassName){ var redTags=document.getElementsByClassName('lt-label'); 如果(redTags.is
div
,它是由js创建的,我想让它类化。
我尝试getElementsByClassName('lt-label')
(它起作用),然后我想检查lt-label是否有类lt-online,以及页面上的另一个块是否为block。
我的代码:
$(文档).ready(函数(){
if(document.getElementsByClassName){
var redTags=document.getElementsByClassName('lt-label');
如果(redTags.is(“.lt在线”)){
$(“#l-b-wrapper”).css({
“显示”:“块”
});
};
};
});
但它不起作用。我哪里有错
我给出一个链接只是因为html代码太大了,我不能完整地显示我的问题
lt标签-是一个右页小部件按钮
l-b-wrapper-左侧页面小部件按钮您正在混合本机和jQuery,使用jQuery对象,因为
文档。getElementsByClassName
将返回类似数组的对象,而它们没有jQuery方法
$(document).ready(function() {
if ($('.lt-label').is(".lt-online")) {
$("#l-b-wrapper").css({
'display': 'block'
});
};
});
您有一个非常奇怪的本地JS和jQuery的混合,这就是问题的根源
getElementsByClassName
返回没有is()
方法的doElement数组。如果使用jQuery选择元素,则既可以避免问题,又可以缩短代码:
$(function() {
if ($('.lt-label').hasClass('.lt-online')) {
$("#l-b-wrapper").show();
}
});
请注意,如果找到多个.lt label
元素,则可能需要根据所需的行为对其进行循环。要使用jquery方法,需要使用jquery对象,否则会出现错误:方法未定义。因此,您也可以使用jquery包装javascript对象,如下所示:
if ($(redTags[0]).is(".lt-online")) {
其中,redTags由jQuery ie.$()
包装,我们对第一个元素使用[0]
作为getElementsByClassName
类似结果数组的对象
但为了简单起见,在使用jQuery时,我会选择simply jQuery对象:
$('.lt-label')
而不是document.getElementsByClassName('lt-label')代码>正如您应该知道的那样,jQuery有自己的方法字典,并且它只适用于jQuery对象。您正在尝试将jQuery方法.is()
绑定到dom对象,这会导致错误,因为.is()
仅适用于jq对象
这样就可以了(创建jq包装):
您可以将其缩短为:
$(document).ready(function() {
var redTags = $('.lt-label');
$("#l-b-wrapper").css({
'display': function(){
return redTags.is(".lt-online") ? "block" : "none";
}
});
});
如果只想显示/隐藏元素,则可以使用.toggle(布尔)
方法:
$(document).ready(function() {
var redTags = $('.lt-label');
$("#l-b-wrapper").toggle(redTags.is(".lt-online"));
});
我不明白你的意思,不管用。粘贴您的代码,但没有任何更改。如果我在函数内部编写getElement ant alert(仅用于测试),它可以工作,但是$('.lt-label').hasClass-不…请将HTML添加到问题中。在条件中有轻微的输入错误。如果我只能使用document.getElementsByClassName('lt-label')?是的,您可以看到答案。
$(document).ready(function() {
var redTags = $('.lt-label');
$("#l-b-wrapper").toggle(redTags.is(".lt-online"));
});