1

我想要做的是更改跨度的样式属性。我可以通过搜索一个类的子元素,但它并没有改变那个元素的样式。这是我的代码:

$(".cmbdiaclase > span").each(function ()
    {
         if($(this).attr("class") == "selectBox-label"){
            $(this).style.width = "70px"; //no change style a element

         }
    });

我希望你能帮助我,谢谢。

4

6 回答 6

3
$(".cmbdiaclase > span").each(function () {
    if($(this).hasClass('selectBox-label')){
        $(this).css('width', '70px'); 
    }
});
于 2013-07-25T19:18:30.737 回答
3

这是使用改进的选择器实现更多 jQuery 风格的另一种方法

$(".cmbdiaclase > span.selectBox-label").css("width", "70px");

width但请记住,除非您的<span>元素将 CSSdisplay属性设置为block或,否则您不会看到 CSS 属性有任何变化inline-block

如果您想保留相同的代码,那么您只需更改原始代码中的一些内容即可。设置 CSS 样式时,您应该使用.css(). 测试课程时,您可以使用.hasClass(className)

$(".cmbdiaclase > span").each(function ()
{
     if($(this).hasClass("selectBox-label"))
     {
        $(this).css("width", "70px");

     }
});
于 2013-07-25T19:18:39.743 回答
1
$(".cmbdiaclase > span").each(function () {
        if($(this).hasClass('selectBox-label'){
             $(this).css('width', '70px');
        }
});
于 2013-07-25T19:18:55.047 回答
1

在这里您的解决方案,您需要使用CSS()函数来更改样式。

$(".cmbdiaclase > span").each(function ()
    {
         if($(this).hasClass("selectBox-label")){
            $(this).css('width','70px'); //no change style a element

         }
    });
于 2013-07-25T19:18:57.217 回答
0

JS:

改变:

$(this).style.width = "70px"; //no change style a element

至:

$(this).style.width("70px");

正如 jQuery 的文档定义的width

.宽度(值)

value 类型:字符串或数字 一个表示像素数的整数,或一个整数以及附加的可选测量单位(作为字符串)。

正如其他人提到的那样,您还应该更改以下用途:

if($(this).attr("class") == "selectBox-label"){

至:

if($(this).hasClass('selectBox-label')){

正如hasClass的 jQuery 文档所定义的那样:

描述:确定是否为任何匹配的元素分配了给定的类。
.hasClass( className )
className
类型:String
要搜索的类名。

于 2013-07-25T19:20:54.387 回答
0

你几乎是对的:

$(".cmbdiaclase > span").each(function () {
    // use hasClass, instead of checking the attr("class"), this will only work if it has 1 class.
    if($(this).hasClass('selectBox-label')){
        // This is wrapped in a jQuery $( ) which makes it a jQuery object
        $(this).css('width', '70px');

        // Not wrapped in a jQuery $( ), it stays the DOM object. 
        this.style.width = "70px";  
    }
});

所以这取决于你如何在上下文中使用它。你想要一个 jQuery 对象还是一个 DOM 对象。

于 2013-07-25T19:21:05.210 回答