Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery切换属性值_Javascript_Jquery - Fatal编程技术网

Javascript jQuery切换属性值

Javascript jQuery切换属性值,javascript,jquery,Javascript,Jquery,我想使用以下选项切换所有元素属性: $('[contenteditable]').prop('contenteditable', !$(this).prop('contenteditable')); 它只会在第一次切换为true,而不会在第二次切换为false。怎么了?将回调函数与 $(“按钮”)。单击(函数(){ $('contenteditable1').prop('contenteditable',function(i,val){ return val==“false”?true:fa

我想使用以下选项切换所有元素属性:

$('[contenteditable]').prop('contenteditable', !$(this).prop('contenteditable'));

它只会在第一次切换为true,而不会在第二次切换为false。怎么了?

将回调函数与

$(“按钮”)。单击(函数(){
$('contenteditable1').prop('contenteditable',function(i,val){
return val==“false”?true:false;
});
});

hiu
单击
变量“this”仅指功能块的上下文。必须更改为选择所有元素并使用forEach切换所有值

更新

如上所述:它返回字符串,因此可以使用三元运算符解决问题:单行解决方案

$('#contenteditable1').attr('contenteditable',$(this).attr('contenteditable')==='true'?'false':'true' );
旧=>


如果属性有多个值,我将使用此代码在所有属性值中切换一个值:

// jquery toggle just the attribute value
$.fn.toggleAttributeVal = function (attr, val) {
    var valArray =  $(this).attr(attr).split(" ");
    var elementIndex = valArray.indexOf(val);
    if (elementIndex >= 0) {
        valArray.splice(elementIndex, 1);
    }
    else {
        valArray.splice(-1, 0, val);
    }
    $(this).attr(attr, valArray.join(" "));
    return this;
};
用法示例(用于使用Font Asome5 JS版本):

//jquery仅切换属性值
$.fn.toggleAttributeVal=函数(attr,val){
var valArray=$(this.attr(attr.split)(“”);
var elementIndex=valArray.indexOf(val);
如果(元素索引>=0){
valArray.拼接(elementIndex,1);
}否则{
拼接(-1,0,val);
}
$(this.attr(attr,valArray.join(“”));
归还这个;
};
$(文档).ready(函数(){
$(“#btn1”)。单击(函数(){
$(“#icon3.fa cog”).toggleAttributeVal(“数据fa转换”,“右-2”);
});
});

切换属性

不会,因为“this”不是指所需的对象可能重复我在回答中提供的fiddle没有办法不使用if开关吗?我想要一行解决方案,所以我现在使用:
$(“[contenteditable]”)。attr('contenteditable')=='true'$('[contenteditable]').attr('contenteditable','false'):$('[contenteditable]').attr('contenteditable','true')可以使用三元运算符
条件?expr1:expr2;'但它会考虑到
true`值,在这里,您将其作为字符串得到,因此,您需要稍微绕过它,以检查三值中的
“true”
。val返回字符串
“false”
使用
返回val==“false”?true:false
请改为@PranavCBalan,同时检查我的解决方案。
// jquery toggle just the attribute value
$.fn.toggleAttributeVal = function (attr, val) {
    var valArray =  $(this).attr(attr).split(" ");
    var elementIndex = valArray.indexOf(val);
    if (elementIndex >= 0) {
        valArray.splice(elementIndex, 1);
    }
    else {
        valArray.splice(-1, 0, val);
    }
    $(this).attr(attr, valArray.join(" "));
    return this;
};