Javascript 如何使用JQuery以编程方式翻转元素属性的值?

Javascript 如何使用JQuery以编程方式翻转元素属性的值?,javascript,jquery,boolean,attributes,toggle,Javascript,Jquery,Boolean,Attributes,Toggle,我刚刚开始使用JQuery,所以如果这是一个简单的问题,我提前道歉 我正在与尝试在我正在使用的webapp中获取实时打印预览。我已经让它工作得令人满意,但我现在正试图将我的代码重构到我认为应该是内部的样子。我目前有两套方法,一套用于显示microcopy块,另一套用于删除它。我更愿意只使用一个集合来切换相关元素的适当值 对于CSS,这意味着禁用非打印预览图纸并启用打印预览图纸,反之亦然。对于我的microcopy,这意味着将显示设置为块,而不是无,反之亦然 至少对于样式表链接,我只想在相关的链接

我刚刚开始使用JQuery,所以如果这是一个简单的问题,我提前道歉

我正在与尝试在我正在使用的webapp中获取实时打印预览。我已经让它工作得令人满意,但我现在正试图将我的代码重构到我认为应该是内部的样子。我目前有两套方法,一套用于显示microcopy块,另一套用于删除它。我更愿意只使用一个集合来切换相关元素的适当值

对于CSS,这意味着禁用非打印预览图纸并启用打印预览图纸,反之亦然。对于我的microcopy,这意味着将
显示设置为
,而不是
,反之亦然

至少对于样式表链接,我只想在相关的
链接
元素集合中循环,并将
禁用
设置为
!禁用了
,但我不知道该怎么做。我正在使用jQuery,但我不反对将其降低到抽象级别以下

我假设,一旦我知道如何为
链接
元素执行此操作,我就应该能够扩展解决方案,以同时切换microcopy div的
显示
属性

以下是我目前为好奇者提供的功能:

function printPreview() {
    $("link[rel*='style'][media!='print'").attr("disabled", true);
    $("link[rel*='style'][title='print preview']").attr("disabled", false);
    addPrintPreviewMicrocopy();
}

function addPrintPreviewMicrocopy() {
    $("div[id='print-preview-microcopy']").css({'display':'block'});
}

function normalView() {
    $("link[rel*='style'][media!='print'").attr("disabled", false);
    $("link[rel*='style'][title='print preview']").attr("disabled", true);
    removePrintPreviewMicrocopy();
}

function removePrintPreviewMicrocopy() {
    $("div[id='print-preview-microcopy']").css({'display':'none'});
}
提前谢谢


谢谢大家。以下是我的最终解决方案:

function toggleView() {
    $("link[rel*='style'][media!='print']").each( function() {
        this.disabled = !this.disabled;
    });
}

事实证明,我甚至不需要切换div,因为只有stylsheets可以切换div。

您可以使用
切换功能切换显示/隐藏:

function removePrintPreviewMicrocopy() {
    $("div[id='print-preview-microcopy']").toggle();
}

disabled
HTML属性在技术上不是布尔值。它是一个值为“”或“已禁用”的可枚举项

但是,
disabled
DOM属性是一个布尔值

$('selector').attr( "disabled", "" );
$('selector').each( function() { this.disabled = false; } );
而且,您的ID选择器太复杂了

$("div[id='print-preview-microcopy']")
应该是

$("#print-preview-microcopy")

另一个选项是使用show()和hide()方法

如果你愿意,也可以用漂亮的淡色

$("#selector").fadeIn("slow");
$("#selector").fadeOut("slow");
需要注意的是,“选择器”应与相关的div id或html标记重新定距。

对于
元素,您可以使用以下选项切换其
禁用的
属性:

$('link[rel*=style]').each(function(){
  this.disabled = !this.disabled
})
这是因为该属性是
元素的读/写
布尔属性


至于div,您可以按照其他人的建议使用。

谢谢!这适用于microcopy div。我的代码是
$(“#打印预览microcopy”)。toggle()
。感谢您的回复。如果我遗漏了什么,请原谅,但我无法告诉您的代码如何允许我在所有选定元素上切换disabled的值。我不只是想把它关掉,我想从开到关再到开,等等。谢谢你的进一步解释。罗汀·马思的回答说明了如何。我只是在区分HTML属性和DOM属性
$('link[rel*=style]').each(function(){
  this.disabled = !this.disabled
})