jQuery和这个的范围

时间:2017-05-13 04:07:15

标签: jquery scope this

我遗漏了具有此功能范围的内容,我有一个自动添加类到图像的cms,但没有但不会改变它们的对齐方式,因此文本不能正确地包裹它们。我不能简单地使用$(" img")。attr(" align"," left");因为这会改变页面上的每个图像,即使用上下文" img",这个'是不是像我想的那样工作,绝对没有。

function align_image(){
    console.log("func called");
    if($("img").length){
        if($("img").hasClass("alignleft")){
            $("img", this).attr("align","left");
            console.log("aligned left!")
    }

       if($("img").hasClass("alignright")){
           $("img", this).attr("align","right");
           console.log("aligned right!");
       }
   }
}
align_image();

有没有人知道如何更改每个img以与其相关的类对齐?奖励积分为何其起作用。

编辑:codepen demo

3 个答案:

答案 0 :(得分:2)

我认为你可以遍历每个图像,迭代器函数引用带有“this”引用的img DOM元素。像这样:

function align_image(){
    console.log("func called");
    if ($(this).hasClass('alignleft')) {
        $(this).attr("align","left");
    }

    if ($(this).hasClass('alignright')) {
        $(this).attr("align","right");
    }
}

$('img').each(align_image);

正如评论(以及其他答案)中所建议的那样,您也可以使用特定的jQuery选择器来实现相同的目标:

$('img.alignleft').attr("align","left");
$('img.alignright').attr("align","right");

最后,根据w3schools,不推荐使用img align属性,而应使用CSS属性。这样的事情应该有效:

img.alignleft {
  float: left;
}

img.alignright {
  float: right;
}

我希望这能抓住所有角度。

答案 1 :(得分:0)

  

试试这个。我认为它对你有所帮助

function align_image(){
    console.log("func called");
   if ($('img').hasClass('alignleft')) {
    $(this).attr("align","left");
    }

   if ($('img').hasClass('alignright')) {
    $(this).attr("align","right");
    }
}
align_image();

答案 2 :(得分:0)

您最好使用filter方法查找元素并添加如下所示的attr:

$("img").filter('.align-right').attr("align","right") ;                           
$("img").filter('.align-left').attr("align","left") ;

See here