2011-10-21 12 views
0

私は、ラジオ選択表示形式の形式の複数の順序付けられていないリストを持っています。私がul内の次のliを選択すると、前に選択されたliを保存し、次のliが選択されるまで同じulの上のh3のテキストにアクセスできるようにする必要があります。 jQueryのどのセレクタを使うべきですか?どのようにこれを達成するための任意のアイデア?最後の親H3の内部テキストは、LIをクリックしたものは何でもjQueryを使用して以前に選択したliオプションを保存する方法は?

ユースケース1

<h3>text1</h3> 
<ul id="one"> 
<li>some text</li> 
<li>some text</li> 
<li>some text</li> 
</ul> 
<h3>text2</h3> 
<ul id="two"> 
<li>some text</li> 
<li>some text</li> --> I select this li first. 
<li>some text</li> 
</ul> 
<h3>text3</h3> 
<ul id="third"> 
<li>some text</li> 
<li>some text</li> 
<li>some text</li> -> Next I select this li - at this point I should be able to get the text "text2" of the previously selected li and store it in a variable say var 1. 
</ul> 

ユースケース2

<h3>text1</h3> 
<ul id="one"> 
<li>some text</li> 
<li>some text</li> 
<li>some text</li> 
</ul> 
<h3>text2</h3> 
<ul id="two"> 
<li>some text</li> 
<li>some text</li> --> I select this li first. 
<li>some text</li> --> Next I select this li - at this point I should be able to get the text "text2" of the previously selected li and store it in the same variable as above ie var 1. 
</ul> 
<h3>text3</h3> 
<ul id="third"> 
<li>some text</li> 
<li>some text</li> 
<li>some text</li> 
</ul> 
+1

あなたの質問の多くの答えを受け入れるために良いでしょう。そうすることで、他の人たちがこのような質問をするのを助けてくれるでしょう。 – Blazemonger

+0

圧倒的な反応をお寄せいただきありがとうございます、私は答えのそれぞれを試してみるつもりです、これまで私はこの質問を投稿する前に、前と最善を試みましたが、私はusecase1を満たすように試みるとき、 2は機能せず、その逆もあります。 – neelmeg

答えて

1

あなたはjQueryの

var dataHolder = $('ul').first(); 

dataHolder.data('oldEle', { 
    text: 'NAN', 
    index: -1, 
    parentClass: "NANClass" 
}); 

$('li').click(function() { 

    alert('prev: ' + dataHolder.data('oldEle').text + ' index of prev: ' + dataHolder.data('oldEle').index + ' in parent: ' + dataHolder.data('oldEle').parentClass); 
    dataHolder.data('oldEle').text = $(this).text(); 
    dataHolder.data('oldEle').index = $(this).index(); 
    dataHolder.data('oldEle').parentClass = $(this).closest('ul').attr('id'); 
}); 

data jquery example

+0

このコードは岩です。ありがとうzdrsh!前にjQueryのデータ関数を使用したことはありませんでしたが、達成したいのとまったく同じです。 – neelmeg

+0

ええ、便利です:D tnx – zdrsh

0
var lastClickedText; 

$('li').live('click', function() { 
    if (lastClickedText) { 
     alert(lastClickedText); 
    } 
    lastClickedText = $(this).parents('h3').text(); 
}); 

これは警告する必要がありました。テストされていない。

+0

h3はliの親ではなく、その親ulの兄弟(複数のh3がある)です。私はこれがうまくいくとは思っていません。 –

+0

@RichardEdwardsおそらく正しいですが、jqueryの.closest()が良い選択かもしれません。 – jbabey

1

クリックイベントの最後に最後にクリックしたアイテムを保存するだけです。その後、domをバックアップして関連するh3の値を取得することができます。

var lastClickedLi = null; 
var var1 = ""; 
$('li').click(function() { 
    if (lastClickedLi != null) { 
     var1 = lastClickedLi.closest('ul').prev('h3').text(); 
    } 
    lastClickedLi = $(this); 
}); 

http://jsfiddle.net/6yypn/

0
var lastLiH3; 
$('li').click(function(){ 
    if(lastLiH3){ 
     alert(lastLiH3); 
    } 
    lastLiH3 = $(this).parent('ul').prev('h3').text(); 
}); 
0

からデータオブジェクトを、これは何が必要です使用することができますか?

http://jsfiddle.net/RZRcC/7/

HTML:

<h3>text1</h3> 
<ul id="one"> 
    <li><input type="radio" value="test1" name="t1"/></li> 
    <li><input type="radio" value="test1" name="t1"/></li> 
    <li>v</li> 
</ul> 
<h3>text2</h3> 
<ul id="two"> 
    <li><input type="radio" value="test1" name="t2"/></li> 
    <li><input type="radio" value="test1" name="t2"/></li> --> I select this li first. 
    <li><input type="radio" value="test1"/></li> 
</ul> 
<h3>text3</h3> 
<ul id="third"> 
    <li><input type="radio" value="test1" name="t3"/></li> 
    <li><input type="radio" value="test1" name="t3"/></li> 
    <li><input type="radio" value="test1" name="t3"/></li> -> Next I select this li - at this point I should be able to get the text "text2" of the previously selected li and store it in a variable say var 1. 
</ul> 

jQueryの一部:

var lastSelect = null; 
var lastSelectHead = null; 
$(document).ready(

function() { 
    $("li > input[type='radio']").click(

    function() { 
     if (lastSelect) { 
      lastSelectHead = $(lastSelect).parents("ul").prev("h3").text(); 
     } 
     lastSelect = this; 
     if (lastSelectHead) { 
      alert(lastSelectHead); 
     } 
    }); 
}); 
関連する問題