2012-04-13 13 views
2

私は以下のHTMLコードを持っています。これは本質的に投稿に関係していて、何行かを何行か発表し、 "[...]"で終わり、下部にある「続きを読む」リンクボタン。このボタンをクリックすると、隠されている追加のコンテンツは、ボタンが消えると消えてしまい、見えているテキストと隠されていたものが見えます。今、私はすでにこのコードを書いていますが、私はでもに私がスニークピークに含まれていた "[...]"(クリックボタンが起こったポストから)を削除しようとすると、ここではHTMLです:「スライドコンテンツは」フェードイン効果を制御するために、私の.jsファイルに属しながら(jQuery)特定のテキストを検索して置換する

<div class="entry"> 
    <p>Welcome. Talk about something briefly and click below for more. [...]</p>  

    <div class="slide-content"> 
     <p>Hidden content.</p> 
    </div> 
    <span id="revealer" class="button"><a href="#">Read more</a></span> 
</div> 

クラス「エントリ」と「ボタン」は、私のCSSファイルに属しています。 ID「revealer」も同じ目的のために.jsファイルに属します。このHTMLはdivタグに "box"というクラスでラップされています。これは、各記事が同じHTML要素を持つ形式とまったく同じ形式になっています。発表が必要なたびに、段落タグの間にコンテンツを配置して公開するだけです。ボタンがクリックされたポスト内の「[...]」を削除する方法が見つからないので、ここで問題が発生します。複数の投稿を通じて「[...]」私は、次の操作を実行しようとしたが、それはすべての削除の結果:

$('.entry p').each(function() { 
    var textReplace = $(this).text(); 
    $(this).text(textReplace.replace('[...]', '')); 
}); 

概要:

  1. を私は「[を削除する必要があります。.. 。] "テキストユーザーがクリックしたポストからのみ("続きを読む "ボタン)。これを隠しコンテンツが消えていくうちに削除することが考えられます。
  2. すべてののインスタンスは「[...]」となっています。 jQueryコードやHTMLを変更して選択範囲を洗練する必要があります。
  3. オプション3は、この「[...]」を取り除くことですが、私はそこに置いておきたいと思っています。もっと読むことができます。一貫性を保つため、すべての投稿のボタンをクリックします。

〜ありがとうございます!

+0

+1素晴らしい質問形式です。ようこそ。 – elclanrs

+0

[私はあなたが "スニークピーク"を意味すると思う](https://twitter.com/#!/stealthmountain) –

答えて

1

まず、あなたはこれらの複数があると言います。その場合、

<span id="revealer" class="button"><a href="#">Read more</a></span> 

は動作しません。 idの属性はドキュメントごとに一意である必要があります。つまり、最大で1つの要素がidの値を持つことができます。

このように、あなたは(ブロック毎に)あなたのHTMLを作成する場合:

<div class="entry"> 
    <p>Welcome. Talk about something briefly and click below for more. [...]</p>  

    <div class="slide-content"> 
     <p>Hidden content.</p> 
    </div> 
    <span class="revealer button"><a href="#">Read more</a></span> 
</div> 

と、このようなあなたのJS:

function replace(fromp) { 
    var textReplace = fromp.text(); 
    fromp.text(textReplace.replace('[...]', '')); 
} 

$('.revealer').click(function() { 
    var fromp = $(this).siblings().eq(0); 
    replace(fromp); 
}); 

それが正常に動作します。作業例:

この情報がお役に立てば幸いです。

+0

これは良い答えですが、後のマークアップの再編成に制限はありませんか? – AlexMA

+0

@AlexMA確かに、それは確かに制限を置く - 'p'は最初の要素でなければなりません。私はほとんどすべての代わりに** ** p **を使ってこれを行う方法を示していました。それらが二次的な問題である - 有効な点ですが、これは一般的には解決できません(例えば複数の 'p'を持つことができます - どちらを選択するのか、そして他のものの代わりにその理由など) 。 –

+0

ありがとうございます - これは私が探していたものです。あなたはロックスターです。上手くいって、元気に! – Treadstone

0

ページ初期化スクリプトを実行するときに、jqueryを使用してすべての投稿とすべての削除ボタンを選択し、クリックイベントを介してリンクすることができます。私はJSFiddle exampleを作成しましたが、ここでのJISTです:

var removers = $(".remover") 
var posts = $(".post") 
for (var i = 0; i < removers.length; i++) { 
    $(removers[i]).click({ post: posts[i] }, 
     function(event) { 
      var textReplace = $(event.data.post).text() 
      $(event.data.post).text(textReplace.replace('[...]', '')) 
     } 
    ) 
}​ 

は、これは単純化した例です。マークアップ内で投稿とボタンがソートされていることを前提としています。

+0

ありがとうございます。現在、私がコーディングしているこのシステムは非常に簡単で、ポストに自動的に特定のIDが与えられているところにはまだ達していません。しかし、後でそれが予定されているので、私は時間が来るときにあなたのポストを覚えておくつもりです。乾杯! – Treadstone

関連する問題