jQuery - 从一个元素复制到另一个IF条件是正确的

时间:2011-04-10 13:17:48

标签: jquery class element transfer

后遗症的基本思路。

将文档就绪复制类从“#box-one”转换为“#box-three”如果“#box-two img”具有与“#box-one img”相同的图像名称

如果可能的话......有可能将特定类别排除在转移

之外

HTML:

<span id="box-one" class="first second third">
   <img src="imagefolder/image1.jpg" alt />
</span>

<span id="box-two">
   <img src="imagefolder2/image1.jpg" alt />
</span>

<span id="box-three"></span>

请记住“#box-one”和“#box-two”中的图像会发生变化,但总是相同的。

就js而言,我不知道如何做到这一点..怎么可能这样做?

3 个答案:

答案 0 :(得分:2)

这会将第一个框中的所有类添加到第三个框,并清除第一个框的类。如果要移动特定的类,可以使用jQuery方法$.addClass$.removeClass

$(document).ready(function() {
  var box1 = $('#box-one'),
      box2 = $('#box-two'),
      box3 = $('#box-three'),
      className = box1.attr('class');

  if(box1.find('img').attr('src') === box2.find('img').attr('src')) {
      box3.addClass(className);
      box1.attr('class', '');
  }
});

修改

您可以使用以下方式比较文件名段:

var src1 = $('#box-one').attr('src').split('/').pop(),
    src2 = $('#box-two').attr('src').split('/').pop();

答案 1 :(得分:2)

$(document).ready(function(){

    var classesToIgnore = ["second"];

    if($("#box-one > img").attr("src").split('/').pop() == $("#box-two > img").attr("src").split('/').pop()) {
       //Get all classes into an array
       var classes = $("#box-one").attr("class").split(" ");
       //Grep out the classes you dont want and join it into a string seperated by space
       classes = $.grep(classes, function(class, index){
           return ($.inArray(class, classesToIgnore));
       }).join(" ");
       //Overwrite #box-three's classes. If you want to append them, loop over the array and use $("#box-three").addClass("className");
       $("#box-three").attr("class", classes);
    }

});

工作示例:http://jsfiddle.net/raPBy/

答案 2 :(得分:0)

试试这个:

$(document).ready(function(){
  if($('#box-two img').attr('alt') == $('#box-one img').attr('alt')){//can use attr('src')
   $('#box-three').addClass($('#box-one').attr('class'));
    $('#box-one').removeClass();//if u want to remove class from #box-one
  }
});