2016-06-14 12 views
1

ブートストラップポーカーからデータ値を読み込む必要があります。ポップオーバーからデータ属性を読み取る

詳細:

パネルに関連付けられたポップオーバーがあります。 ポップオーバーには、(onClickによって)パネルdivに含まれる属性のdata-infoの値を読み取らなければならない関数が呼び出されるリンクがあります。

HTMLコード:

<div class="panel panel-success redim" data-info="informations" data-content="&lt;div onClick=&quot;modifica_appuntamento()&quot; class=&quot;text-center&quot;&gt;&lt;a href=&quot;#&quot;&gt;Get info&lt;/a&gt;&lt;/div&gt;" data-original-title="Get data from popover"> 
     <div class="panel-heading">Heading</div> 
     <div class="panel-body">Body</div> 
</div> 

のjQuery:

$(function() { 
popoverOptions = { 
html: true, 
animation: true 
}; 
$('.panel').popover(popoverOptions); 
}); 

function modifica_appuntamento() { 
    alert($(this).parent().data('info')); 
} 

JSFiddle: https://jsfiddle.net/fabioravizzotti/3h4vu8Ly/

あなたが解決策を見つけるために私を助けることができますか?

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

答えて

1

まず問題

その場合の.parent()が実際にメイン.popover div要素であり、あなたがからdata-infoを取得しようとしている要素が.prev()あるとしてあなたの要素セレクタは、間違っています。だから、使用する必要があります。

$(this).closest('.popover').prev().data('info'); 

第二の問題

あなたはあなたの関数内$(this)を使用することはできません。インラインonclickを使用すると、関数に要素を渡す必要があります属性:

onClick='modifica_appuntamento(this);' 

その後:サイドノートで

function modifica_appuntamento(elem) { 
    $(elem).... 
} 

を。
It's not a good practice to use javascript attributes
私はポップオーバーリンクにclass="data-info"を追加し、jQueryを使ってイベントをクリックして委任することができことをお勧めしたい:

$(document).on('click', '.data-info', function(){ 
    alert($(this).closest('.popover').prev().data('info')); 
}); 

JSFiddle Demo

+0

こんにちはアルトゥール、それは申し訳ありませんが、動作しますが、私はnewbie on javascript。最も近い機能で_.popover_セレクターを使用する方法を理解できません。 HTMLにはない "popover"というクラスがあります。あなたはブートストラップテンプレートからそれを手に入れますか?ありがとう。 – Fabio

+0

'popop'は* popover *が現れたときにブートストラップによって動的に生成されます(メインポップオーバーDIVです) –

関連する問題