在JQuery中更改borderColor的问题

Jon*_*han 0 css jquery

我是JQuery的新手,实际上这是我写过的第一个脚本.下面简单地找到所有带有"TestDIV"类的DIV,然后对它们内部的输入执行一些操作.

一切都与borderColor不同,后者仍然是我最初设置它的颜色.有没有人对这是为什么有任何想法?我也非常欢迎有关如何改进代码的提示.

function hideAndShowJQ(show) {
        var hideColor = "#DFDFDF";
        //Find DIVs and modify styling
        var div = $('div.TestDIV'); //Find relevant divs
        div.css('color', (show) ? "" : hideColor) //Change text colour
            .find(':input').attr("disabled", !show) //Disable any inputs
            .attr("borderColor", "red") //Change border colour of inputs
            .attr("value", ""); //Clear any existing input text
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*mas 5

问题是它borderColor不是元素的属性,而是CSS属性.

要更改css属性/值使用css().此外,当使用引号时,它"border-color"不是borderColor(尽管@Felix Kling指出,在下面的评论中,关于camelCase在引号中并不重要):

div.css('color', (show) ? "" : hideColor) //Change text colour
            .find(':input').attr("disabled", !show) //Disable any inputs
            .css("border-color", "red") //Change border colour of inputs
            .attr("value", ""); //Clear any existing input text
Run Code Online (Sandbox Code Playgroud)

鉴于您正在使用jQuery,并且有一个input要清除的元素,它可能更容易使用val(),而不是attr():

.val(''); // sets the value of the input to an empty string.
Run Code Online (Sandbox Code Playgroud)

  • 它是`borderColor`还是`border-color`并不重要.两者都有效.只有将对象传递给`css`时,如果使用非字符串键,它必须是`borderColor`. (2认同)