【问题标题】:Understanding jQuery selector output了解 jQuery 选择器输出
【发布时间】:2017-02-25 04:06:47
【问题描述】:

在我的 javascript 中,我使用以下代码创建了一个 div:

var myDiv = document.createElement('div');
myDiv.className = 'square';
myDiv.id = originalID;
...
myDiv.myAttribute = myValue;

稍后,我想修改它,所以我尝试用这个代码选择它:

$("div[myAttribute ='"+ myValue +"']")

但是,我无法使用此代码修改 myDiv!

$("div[myAttribute ='"+ myValue +"']").id = newID;

所以我正在尝试使用此警报进行调试:

alert(JSON.stringify($("div[myAttribute ='"+ myValue +"']")));

但它显示了一堆乱七八糟的东西:

{

"length":0,
"prevObject":{
    "0":{
        "location":{
            "href":"http://localhost:3000/",
            "origin":"http://localhost:3000",
            "protocol":"http:",
            "host":"localhost:3000",
            "hostname":"localhost",
            "port":"3000",
            "pathname":"/",
            "search":"",
            "hash":""
        }
    },
    "context":{
        "location":{
            "href":"http://localhost:3000/",
            "origin":"http://localhost:3000",
            "protocol":"http:",
            "host":"localhost:3000",
            "hostname":"localhost",
            "port":"3000",
            "pathname":"/",
            "search":"",
            "hash":""
        }
    },
    "length":1
},
"context":{
    "location":{
        "href":"http://localhost:3000/",
        "origin":"http://localhost:3000",
        "protocol":"http:",
        "host":"localhost:3000",
        "hostname":"localhost",
        "port":"3000",
        "pathname":"/",
        "search":"",
        "hash":""
    }
},
"selector":"div[myAttribute='myValue']"

}

如何形成使用选择器修改元素 ID 的语句?

【问题讨论】:

  • jQuery 对象没有.id 属性。您可以使用querySelector 代替document.querySelector("div[myAttribute ='"+ myValue +"']").id = newID 这绕过了为这个简单操作创建jQuery 对象的需要。
  • div.myAttribute = 'X' 设置对象的属性,而不是元素的属性。 'messy'调试信息中的第一条信息显示jquery结果的长度为0:没有匹配的元素。
  • @GolezTrol 我认为您正在做某事...如何按属性选择?
  • 没有属性选择器,但是你可以将一个函数传递给像.filter这样的jQuery方法,而不是选择器,这样你就可以进行自定义检查。这个函数可以称为predicate ,尽管我认为 jQuery 没有使用该术语。或者,您可以使用 setAttribute() 或 jQuery 的 .attr() 将值设置为 (DOM) 属性。

标签: javascript jquery


【解决方案1】:

首先,在创建 myDiv 之后,你是否将它附加到 dom 中。 尝试将其附加到 DOM。 检查以下代码sn -p

var myDiv = document.createElement('div');
myDiv.className = 'square';
myDiv.id = "originalID";
document.body.appendChild(myDiv)
myDiv.setAttribute('myAttribute',2);
alert(myDiv.getAttribute('myAttribute'))

希望对你有帮助

【讨论】:

  • 是的,我确实附加到了 DOM。我认为我的问题是我将属性与属性混淆了。 JavaScript 新手。我认为您的“设置属性”提示将帮助我解决这个问题!谢谢
猜你喜欢
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
  • 2021-11-04
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
相关资源
最近更新 更多