2011-08-10 16 views
2

私は、生成されjqueryuiアコーディオンのようなコードがあります:jQueryの最も近いリターン

<div id="treeview-accordion"> 
<h3><a href="#" accindex="0">Basic</a></h3> 
<div> 
    <ul class="navigation-treeview treeview-sanjo" id="yw0"> 
     <li><span style="font-weight:bold"><a href="/sanjo/site/index"> Home</a></span> 
      <ul> 
       <li><span> Profile</span> 
        <ul> 
         <li><span><a href="/sanjo/user/profile"> View Profile</a></span></li> 
         <li><span><a href="/sanjo/user/profile/edit"> Update Profile</a></span></li> 
         <li><span><a href="/sanjo/user/profile/changepassword"> Change Password</a></span></li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
     <li><span> Personnel Management</span> 
      <ul> 
       <li><span><a href="/sanjo/user/admin"> Manage Personnel</a></span> 
       <ul> 
        <li><span><a href="/sanjo/user"> List Personnel</a></span></li> 
        <li><span> Add Personnel</a></span></li> 
       </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 
<h3><a href="#" accindex="0">Basic2</a></h3> 
<div> 
    <ul class="navigation-treeview treeview-sanjo" id="yw01"> 
     <li><span style="font-weight:bold"><a href="/sanjo/site/index2"> Home2</a></span> 
      <ul> 
       <li><span> Profile</span> 
        <ul> 
         <li><span><a href="/sanjo/user/profile2"> View Profile2</a></span></li> 
         <li><span><a href="/sanjo/user/profile/edit2"> Update Profile2</a></span></li> 
         <li><span><a href="/sanjo/user/profile/changepassword2"> Change Password2</a></span></li> 
        </ul> 
       </li> 
      </ul> 
     </li> 
     <li><span> Personnel Management2</span> 
      <ul> 
       <li><span><a href="/sanjo/user/admin2"> Manage Personnel2</a></span> 
       <ul> 
        <li><span><a href="/sanjo/user2"> List Personnel2</a></span></li> 
        <li><span> Add Personnel2</a></span></li> 
       </ul> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

と私が達成したいが、応じて、適切な「H3」タグの属性「accindex」を取得することですクリックしたリンクに

たとえば、「View Profile」をクリックし、「h3」(基本)の下に配置されているため、accindex属性の値「0」を取得します。

closest()を使用しようとしましたが、「未定義」を返しています。私は親を使うことはできません。

このようなタスクをどのように達成できますか?親切に私を助けてください。

ありがとうございました。

+0

私は本当にあなたのすべての答えに感謝しています。うまくいけば、私はあなたと同じようにjqueryのエキスパートになれます。 – Macinville

答えて

2

最初に "プロフィールを見る"リンクはh3の内部にはなく、h3の兄弟にあります。試してみてくださいこの

あなたはこの

accindex = $(this).closest("div").prev("h3").find("a").attr("accindex"); 

注意をしてみてくださいビュープロファイルのリンクをクリックしてください

:上記のコード thisでクリックされたアンカーを表します。

+0

ありがとうShankar、ありがとう! – Macinville

+0

ええと。これはちょうど1行のコードで達成できるのは本当に驚きです! (ええ、ええ、私は浅いです:p) – Macinville

+0

@Macinville - 私はあなたに感謝してくれてうれしいです。 – ShankarSangoli

0

「プロフィールを見る」リンクは<h3>の子ではないため、parents()closest()は機能しませんでした。あなたは<ul>、次に<div>へのリンクからDOMをたどる必要があり、<h3>を得ることができます。 thisを想定し

はリンクです:

$(this).closest('ul.navigation-treeview').closest('div').prev('h3'); 

は、あなたが望む<h3>を取得する必要があります。

ここからは、同封の<a>とaccindexを入手してください。

var acc = $(this).closest('ul.navigation-treeview').closest('div').prev('h3').find('a'); 
acc.attr('accindex'); 

DEMO:http://jsfiddle.net/yWsDx/

EDIT:$(this).closest('div').prev('h3').find('a')は問題ないはずです、.closest('ul.navigation-treeview')は必要ありません。

+0

完璧!私はjsfiddleを試してみました。 D – Macinville

+0

私は投票したいと思っていましたが、stackoverflowは私を許さないでしょう。私はできるだけ早くこれを投票するつもりです...あなたは私の日ロケットを保存しました。ありがとうございました – Macinville

+0

@Macinville:ようこそ。私は喜んで助けてくれるでしょう。ここに投稿しておいてください。最終的には、上院議員には:-) –

0

「find」や「children」を使用する必要があるようです。

(H3のコンテキストを使用した場合)ですから、どうなるアンカータグ内の属性を取得するには:

$("h3 a").attr("accindex"); 

または

$("h3").find("a").attr("accindex"); 

または

$("h3").children("a").attr("accindex"); 

私はあなたのクリックイベントを推測するには、選択肢としてアンカータグを使用するので、次のようにする必要があります。

$(this).attr("accindex"); 

ここで「基本」をクリックします。 http://jsfiddle.net/mrchief/M6PcW/私は希望のhrefにクラスを追加するためのマークアップを変更し

$('a.link').click(function() { 
    alert($(this).closest('div').prev('h3').children('a').attr('accindex')); 
    return false; 
}); 

は(選択を容易にする): http://jsfiddle.net/hns2H/1/

+0

ありがとうジョン、今私は何か新しいことを学んだ! – Macinville

2

はここで働いてフィドルです。
など。 <a class="link" href="/sanjo/user/profile/edit"> Update Profile</a>

+0

"$( 'a.link')"を "$( 'a')"に置き換えました。その後、それは魅力のように働いた! – Macinville

+0

私はそこに「偽り」を返すべきではありません(そして、それはフィドルでそれをしません)。 – Mrchief

+0

Wierd ...下のManage Personnelからリンクをクリックすると、FiddleはError 404を返します...残りの部分は単に属性を通知します – Macinville

関連する問題