2016-09-20 3 views
0

EDIT:親/最寄の事業部発行

<div class="specificBlock" id="thevagabond"> 
    <a class="intro"><img src="images/blabla.png"/></a> 
    </br> 
    <div class="btn-group-xs testing"> 
     <a type="button" class="btn btn-success intro">Use</a> 
    </div> 
</div> 

<div class="specificBlock" id="thedog"> 
    <a class="intro"><img src="images/blabla.png"/></a> 
    </br> 
    <div class="btn-group-xs testing"> 
     <a type="button" class="btn btn-success intro">Use</a> 
    </div> 
</div> 

私の問題は、以下の通りです: 私からのdivのIDを取得するjQueryの/ JavaScriptの方法を見つけるしたい 私は、次のコードを持っていますクリックされた 'a' class = "intro"が由来します。

ここでの問題は、最初にaclass="intro"とクリックすると、最も近いdivのIDを使用する必要があることです。

しかし、2番目のボタンをクリックすると、最も近いdivは正しいものではありません。最も近いdivはclass="testing"のdivになります。これは望ましくありません。

これを行う方法はありますか?

+1

なぜ最も近い? idを持つdivが必要です。 '$("#thevagabond ")' –

+0

セレクタをhttps://api.jquery.com/closest/に最も近いものに渡すことができます。しかし、私はAJのもう一つの質問です。 – Adam

+0

申し訳ありません私は私の質問を編集しました。私は私の問題で十分に明確ではなかった。あなたはそれを今見てもらえますか? – Victor

答えて

1

IDは一意である必要がありますので、ちょうど$('#thevagabond')となります。ただし、おそらく.parents(selector_here) - documentationをチェックする必要があります。

あなたが本当にIDが必要な場合は、このチェック:

$('.specificBlock a').click(function(){ 
var id_that_you_looking_for = $(this).parents('.specificBlock').attr('id'); 
//code more 
}); 
+0

実際、私はこれにちょうど同じような他のブロックを持っています。変更されるのはIDだけです。 そのため、問題が発生しています。 申し訳ありませんが、申し訳ありません:) – Victor

+0

私の編集した答えをチェックしてください。また、HTMLでデータ属性を使用することも検討してください。リンクは「Use」 –

+0

のように見えます。私は私の答えがあると思う。 :) – Victor

0
$("a").on("click", function (e) { 
    $(this).parents("#thevagabond"); 
}); 

または直接#thevagabond前に述べたように。

EDIT:
新しい情報に応じて、(下のコメントを参照してください)HERESに新しいソリューション。 iframeのターゲットURLをahrefに配置するか、またはaまたはその親のいずれかにdata-属性を追加します。

HTML:

<div class="specificBlock" id="thevagabond" data-url="my/iframe/url"> 
    <a class="intro"><img src="images/blabla.png"/></a> 
    </br> 
    <div class="btn-group-xs testing"> 
     <a type="button" class="btn btn-success intro">Use</a> 
    </div> 
</div> 

<div class="specificBlock" id="thedog"> 
    <a class="intro" href="my/iframe/url"><img src="images/blabla.png"/></a> 
    </br> 
    <div class="btn-group-xs testing"> 
     <a type="button" href="my/iframe/url" class="btn btn-success intro">Use</a> 
    </div> 
</div> 

<iframe id="my-frame" src="" width="500" height="500" style="display:none" /> 

のJavaScript/jQueryの:

var $specificBlocks = $(".specificBlock"), 
    $thevagabond = $specificBlocks.filter("#thevagabond"), 
    $thedog = $specificBlocks.filter("#thedog"), 
    $iframe = $("#my-frame"); 

$thevagabond.on("click", "a", function (e) { 
    e.preventDefault(); 
    $iframe.attr("src", $thevagabond.data("url")); 
    $iframe.show(); 
}); 

$thedog.on("click", "a", function (e) { 
    e.preventDefault(); 
    var $t = $(this), 
     url = $t.attr("href"); 

    $iframe.attr("src", url); 
    $iframe.show(); 
}); 

iframe内に表示されるページは、非JSのユーザーと検索のためにもアクセス可能になりますので、私は#thedogオプションを好みますエンジン。

+0

実際に私はこれにちょうど同じような他のブロックを持っています。変更されるのはIDだけです。 そのため、問題が発生しています。 申し訳ありませんが、注釈を付ける必要があります:) – Victor

+0

コードが異なるIDで繰り返し表示されますか?その場合は、クラスを使用するだけで正常に動作します。 –

+0

はい、私はIDを取得する必要があります。なぜなら、クリックされたIDの由来IDに応じて異なるiframe srcを表示するからです。 – Victor

関連する問題