在jQuery中链接时CSS属性不起作用

时间:2012-08-26 08:03:36

标签: javascript jquery css

这是jQuery代码:

$("#web").hover(
  function () {
    $(this).css({
             'background-color': '#ecf5fb',
             'cursor': 'pointer',
             'border': '1px solid #378ac4'
           })
           .children("a").children("img").attr("src", "1.png")
           .end().children("p").css("opacity", "1.0");

           $('#commentweb').stop(true, true).fadeIn();
  }, 
  function () {
    $(this).css({
             'background-color': '#e8e3e3',
             'border': '1px solid grey'
             })
             .children("a").children("img").attr("src", "2.png")
             .end().children("p").css("opacity", "0.5");

             $('#commentweb').stop(true, true).fadeOut();
  }
);

问题是不透明度没有改变,而其他一切都有效。但如果不是这个代码,我写

$(this).css({
         'background-color': '#ecf5fb',
     'cursor': 'pointer',
     'border': '1px solid #378ac4'
       })
       .children("a").children("img").attr("src", "1.png");
$(this).children("p").css("opacity", "1.0");

它有效。为什么会这样?

这是小提琴:http://jsfiddle.net/mMB3F/6/

2 个答案:

答案 0 :(得分:2)

如果您想要返回原始选择,则必须拨打.end()两次,因为您在链上给孩子打了两次电话。

$("#web").hover(
  function () {
    $(this).css({
             'background-color': '#ecf5fb',
             'cursor': 'pointer',
             'border': '1px solid #378ac4'
           })
           .children("a").children("img").attr("src", "1.png")
           .end().end().children("p").css("opacity", "1.0");

           $('#commentweb').stop(true, true).fadeIn();
  }, 
  function () {
    $(this).css({
             'background-color': '#e8e3e3',
             'border': '1px solid grey'
             })
             .children("a").children("img").attr("src", "2.png")
             .end().end().children("p").css("opacity", "0.5");

             $('#commentweb').stop(true, true).fadeOut();
  }
);

http://jsfiddle.net/mMB3F/8/

答案 1 :(得分:1)

如果你想回到原来的jquery对象,你需要在那里添加一个额外的.end() - 每个过滤动作都在堆栈上放置一个新的jquery对象 - 每次调用.end()“pops”堆栈中的最后一个。这是一个更新的小提琴:http://jsfiddle.net/mMB3F/7/