jquery切换html文本

时间:2011-01-04 22:16:11

标签: jquery html hyperlink toggle

我正在尝试显示由标记点击触发的隐藏div:

按钮代码如下所示:

<a href="#" onclick="return false;"  class="viewMoreProducts">View Related Products</a>

当我点击按钮时,这是我的jquery:

// Show Hidden Product Boxes on Expand - More Products and More Link
$(".viewMoreProducts").click(function() {
    $(this).parent().parent().parent().find(".moreProductsBox:first").slideToggle(300, function (){
        if ($(this).parent().find(".moreProductsBox").is(":visible")){ 
            $(this).find(":input").addClass("visibleCounter");

        }
        if ($(this).parent().find(".moreProductsBox").is(":hidden")){ 
            $(this).find(":input").removeClass("visibleCounter");
        }
    });
});

我可以让隐藏的div的切换工作得很好,但我也想更改链接上的文本以在div显示时更改,然后显示它具有“隐藏相关产品”并显示不同的图标崩溃。然后,如果我崩溃它,它会回到查看相关产品并有加号图标。

是否可以将它添加到我已经拥有的jquery中?

这听起来很直接,但让我跑来跑去。

感谢

3 个答案:

答案 0 :(得分:2)

你可以尝试这样的事情(假设多个parent()s不能进一步简化):

$(".viewMoreProducts").click( function(){
  var that = this; // reference to the <a>
  $(this).parent().parent().parent()
      .find(".moreProductsBox:first").slideToggle(300, function (){
        var isvisible = $(this).parent().find(".moreProductsBox").is(":visible");
        $(this).find(":input").toggleClass('visibleCounter', isvisible); 
        $(that).html( (isvisible ? 'Hide It' : 'Show It') );
      });
});

答案 1 :(得分:1)

<a href="#" class="viewMoreProducts">View Related Products</a>

jQuery的:

$(".viewMoreProducts").click(function() {
    var $button = $(this);
    $(this).parent().parent().parent().find(".moreProductsBox:first").slideToggle(300, function () {
        var $input = $(this).find(":input");
        if ($(this).is(":visible")) {
            $input.addClass("visibleCounter");
            $button.text('Hide Related Products');
        } else {
            $input.removeClass("visibleCounter");
            $button.text('View Related Products');
        }
    });
    return false; // allows you to remove that onclick attribute
});

答案 2 :(得分:0)

你可能会发现这有点老式:

var x = this.innerHTML;
this.innerHTML = x.replace("show","z").replace("hide","show").replace("z","hide");