0

私はこのようないくつかのマークアップを持っています:

<li id="myId" data-foo="Bar">Text</li>

IEでは、data-foowithの値を正常に取得していますが$('#myId').data('foo')、ChromeまたはFirefoxでは何も返されません。

情報の価値について:
ページは、テンプレートからasp.netmvcによって生成されます。
アクセスしようとしている関数は、上記の要素data-fooを含むページから起動されたポップアップから呼び出されます。私も運が悪かったのでやってみました<li>
$('#myId').attr('data-foo')

あなたが提供できるどんな助けにも感謝します

更新 この問題は、ポップアップが起動された後に属性にアクセスしようとすることに厳密に関連しています。

UPDATE 2 jsfiddleで問題を再現するために、問題を特定できませんでした。ポップアップが起動された後の属性へのアクセスに厳密に関連していると前述しましたが、さらに調査したところ、そうではありませんでした。使用されているフレームワークはいくつかありますが、それらすべてを検索してバグを探す時間がないため、回避策を見つけました。皆さんの努力に感謝し、時間を割いてくれたことに賛成票を投じたいと思いました。

4

2 に答える 2

2

これはChromeとFirefoxで機能します。

これが私のテストです...

<ul>
    <li id="myId" data-foo="Bar">Text</li>
</ul>
<script>
    alert($('#myId').data('foo'));
</script>

これが失敗する可能性が最も高い理由は、要素が読み込まれる前にjQueryを実行していることです。そのため、スクリプトがドキュメントの最後にあることを確認するか、$(document).ready(構文を使用してDOMをクエリする準備ができていることを確認してください。

これをテストするためにjQuery1.9を使用しました。

于 2013-01-30T21:22:21.657 に答える
1

これをリストアイテムで使用していることに気付きました。IDが一意であることを絶対的に確認できますか?これにより、ブラウザ間で予期しない結果が生じる可能性があります。

編集: HTMLの構文エラーは、この種の問題の主な原因です。期待どおりに機能するようになるまで、HTMLコードの一部を少しずつ削除することをお勧めします。そうすれば、問題がどこにあるかを特定できます。

于 2013-01-30T21:23:36.737 に答える