質問
私はより多くを読む/マルチ段落に以下の機能を読んで追加しようとしています。
私は、次のHTMLとjQueryを使用しています。リンク「続きを読む」私は別のクリックした場合しかし、それは正しく動作しません。滞在「続きを読む」「続きを読む」、またはそれ以上を読んで、以下の文章が混乱してしまうお読みください。
誰もがこの問題を解決する方法を教えてください。
事前に感謝します。
<div id="section1">
<div class="toppara">
<img src="images/toh_texture1a.jpg" width="90" height="90" alt="pic" />
<p>Content 1. </p>
</div>
<div class="morepara">
<img src="images/plucchini_texture02.jpg" width="90" height="90" alt="pic" />
<p>
Content 1-a.
</p>
</div>
<p class="togglebutn">
<a href="#">LESE MER</a>
</p>
</div><!-- section 1 -->
<!-- section 2 -->
<div id="section2">
<div class="toppara">
<img src="images/dandelion.jpg" width="90" height="90" alt="pic" />
<p>Content 2. </p>
</div>
<div class="morepara">
<img src="images/toh_texture1a.jpg" width="90" height="90" />
<p>
Content 2-a.
</p>
</div>
<p class="togglebutn">
<a href="#">LESE MER</a>
</p>
</div><!-- section 2 -->
<!-- section 3 -->
<div id="section3">
<div class="toppara">
<img src="images/plucchini_texture02.jpg" width="90" height="90" />
<p>Content 3. </p>
</div>
<div class="morepara">
<img src="images/dandelion.jpg" width="90" height="90" />
<p>
Content 3-a.
</p>
</div>
<p class="togglebutn">
<a href="#">LESE MER</a>
</p>
</div><!-- section 3 -->
<!-- section 4 -->
<div id="section4">
<div class="toppara">
<img src="images/toh_texture1a.jpg" width="90" height="90" />
<p>Content 4. </p>
</div>
<div class="morepara">
<img src="images/plucchini_texture02.jpg" width="90" height="90" />
<p>
Content 4-a.
</p>
</div>
<p class="togglebutn">
<a href="#">LESE MER</a>
</p>
</div><!-- section 4 -->
<script language="javascript" type="text/javascript">
$(function() {
// set a variable Toggled to false
var Toggled=false;
// Toggle a paragraph
$('.togglebutn a').click(function(){
var $parentpara = $(this).parent().prev();
if(Toggled==false){$(this).html('<span class="readless">read less</span>'); Toggled=true;}
else{$(this).html('<span class="readmore">read more</span>');Toggled=false;}
$parentpara.toggle('slow');
return false;
});
});
</script>
解決
私は完全にこれをテストする時間がありませんでしたが、これはあなたのために働く必要があります。私はあなたの一時変数を削除(あなたがそれを必要はありません)と私はスパンがreadlessを持っているかreadmore定義されたかどうかを確認するためにhasClassを使用しています。
$(document).ready(function(){
// Toggle a paragraph
$('.togglebutn a').click(function(){
var $parentpara = $(this).parent().prev();
if ($(this > span).hasClass('readless')) {
$(this).html('<span class="readmore">read more</span>');
}
else {
$(this).html('<span class="readless">read less</span>');
}
return false;
});
});
他のヒント
あなたのコードで問題が一つだけToggled
のvarはすべての3つの段落に使用されていることです。あなたはすべての変数の使用を避けることができます。使用
.toggleClass('readless').toggleClass('readmore').text($(this).text()=='read less' ? 'read more' : 'read less');
それをテストしていませんが、このようなものは、トリックを行う必要があります。
みんなありがとうます。
私は2つの方法で問題を解決します。
拳ソリューション。私はクリスBrandsmaからヒントを得たhasClass、romoveClassとaddClassを使用しました。おかげでクリスます。
$(function() {
// Toggle a paragraph
$('.togglebutn a').click(function(){
var $parentpara = $(this).parent().prev();
if ($(this).hasClass('readless')) {
$(this).html('LESE MER').removeClass().addClass('readmore');
}
else {
$(this).html('LESE MINDRE').removeClass().addClass('readless');
}
$parentpara.slideToggle('fast');
return false;
});
});
第二の溶液。私はここで使用される属性です。私は誰かがこれは正しい方法ではありません言うかもしれないと思います。しかし、それは動作します。基本的には解決策1
と同じです$(function() {
// Toggle a paragraph
$('.togglebutn a').click(function(){
var $parentpara = $(this).parent().prev();
var $titleattr = $(this).attr('title');
if($titleattr=='readmore') {$(this).attr('title','readless').html('<span class="readless">LESE MINDRE</span>');}
else{$(this).attr('title','readmore').html('<span class="readmore">LESE MER</span>');}
$parentpara.toggle('slow');
return false;
});
});
所属していません StackOverflow