2013-04-17 61 views
0

由於我對jQuery的知識不足,我有點卡住了。將不勝感激任何幫助。我有以下腳本激活擴展內容區域:用於擴展/縮小內容區域的jQuery .text()函數

$(document).ready(function(){ 
    $("a.moreExpand").click(function(){ 
     var myelement = $(this).attr("rel"); 
     $(myelement).slideToggle(function() { 
      $("a.moreExpand").text(
       $(this).is(':visible') ? "LESS -" : "MORE +" 
      ); 
      }); 
    }); 
}); 

我的HTML(在不同的地方所使用的頁面上):

<div class="moreExpandWrapp"> 
    <a href="javascript:void(0)" rel="#aboutExpand" class="moreExpand">MORE <span class="plus">+</span></a> 
    <div class="moreExpandContent" id="aboutExpand"> 
     Lorem ipsum dolor sit amet ... 
    </div> 
</div> 

到目前爲止好,但一旦我擴張/收縮內容在網站上更改所有文本(更多/更少文本)的區域。我試圖針對這樣的腳本:

$(document).ready(function(){ 
    $("a.moreExpand").click(function(){ 
     var myelement = $(this).attr("rel"); 
     $(myelement).slideToggle(function() { 
      $("a.moreExpand", this).text(
       $(this).is(':visible') ? "LESS -" : "MORE +" 
      ); 
      }); 
    }); 
}); 

因此,它是:$("a.moreExpand", this).text( 但是,當然,這不會幫助和替換擴展的內容文本,而不是鏈接文本。據我瞭解這是因爲「$ this」的價值基本上是整個切換區域而不是按鈕。

我想定位鏈接副本而不是展開div,但我不確定如何在這種情況下使用「$ this」(以定位該功能的第一部分)。

非常感謝您對此的意見。

謝謝!

回答

1

其實,這個在JavaScript中引用了你當前的作用域。

裏面的slideToggle回調,你的範圍指的是「slided」元素,所以這個 === myElement。 你應該保持你的初始鏈接使用另一個變種。

http://jsfiddle.net/t4CQt/

$("a.moreExpand").click(function(){ 
    var myLink = this, 
     myelement = $(this).attr("rel"); 
    $(myelement).slideToggle('normal', function() { 
     $(myLink).text(
      $(this).is(':visible') ? "MORE +" : "LESS -" 
     ); 
    }); 
}); 
+1

謝謝配合!這工作像一個魅力。今天我教給我一些新東西,我深表感謝。 – Adrian

+0

所有的快樂都是爲了我! –