在jQuery上反转元属性

在jQuery上反转元属性,jquery,attributes,meta,Jquery,Attributes,Meta,我试图通过使用jQuery函数反转元属性(内容和名称),但前提是元内容以“some”开头 我尝试过这个函数: <script> $('meta').ready(function(){ var a_metaname = $(this).attr("name"); var a_metacontent = $(this).attr("content"); if(a_metacontent^="some") { $('head').append("<meta name="+ a_

我试图通过使用jQuery函数反转元属性(内容和名称),但前提是元内容以“some”开头


我尝试过这个函数:

<script>
$('meta').ready(function(){
var a_metaname = $(this).attr("name");
var a_metacontent = $(this).attr("content");

if(a_metacontent^="some") {
$('head').append("<meta name="+ a_metacontent +" content="+ a_metaname +" />");

}
 });
</script>

$('meta').ready(函数(){
var a_metaname=$(this.attr(“name”);
var a_metacontent=$(this.attr(“content”);
如果(a_metacontent^=“some”){
$('head')。追加(“”);
}
});
但它不会反转每个元的名称/内容

如何改进功能?谢谢

更换这个

if (a_metacontent.match(new RegExp('some[a-z0-9A-Z]+$'))){
    $('head').append("<meta name="+ a_metacontent +" content="+ a_metaname +" />");
}
if(a_metacontent.match(新RegExp('some[a-z0-9A-Z]+$)){
$('head')。追加(“”);
}
在这里,您可能混淆了两件事:
$('meta')。每个(…)
都将迭代所有meta标记<代码>$(文档).ready(…)等待就绪事件<代码>$('meta')。ready(…)可能不会按您的想法执行

由于
stript
标记被放置在
meta
标记之后,因此不需要等待
ready
事件。不确定是否可以在初始加载后修改meta标记(据我所知,大多数meta标记会更快生效)。因此,我建议不要等待


与CSS不同,
^=
在Javascript中并不表示“以开始”。相反,
^=
执行按位异或运算(将两个操作数转换为整数后),并将结果赋回。您可以使用
indexOf
来实现“从开始”功能,也可以使用正则表达式

if(/^some/.test(a_metacontent)){


还要注意

$('meta').each(function(){
    if(/^some/.test($(this).attr("content"))) {
        ...
    }
}
可以替换为

$('meta[content^="some"]').each(function(){
    ...
})

@undefined不是按位XOR和Assign吗?@JanDvorak是的,我忘了JavaScript支持这一点。顺便问一下,我可以知道做这样的事情你想要实现什么吗?这有点复杂,但基本上代码在几周内是不可编辑的,我没有选择使用jQuery来节省我的项目时间!)这很有道理,非常感谢Jan Dvorak和@user546305
if(a_metacontent^="some") {
if(/^some/.test(a_metacontent)){
$('head').append("<meta name="+ a_metacontent +" content="+ a_metaname +" />");
$(this).attr("content", a_metaname).attr("name", a_metacontent)
$('meta').each(function(){
    if(/^some/.test($(this).attr("content"))) {
        ...
    }
}
$('meta[content^="some"]').each(function(){
    ...
})