0

項目の 1 つを選択すると、選択した要素の詳細が記載された別のページが表示されるリストを作成しています。

したがって、詳細ページを作成するには、どの要素が選択されたかを知る必要があります。

私は次のようにリストを作成しています。

$.getJSON("fakultaeten.js",function(data)
        {
            var list = $('#taskList');
            $.each(data.fakultaeten, function(key,value)
            {
                var mother = "<li id='first'>"+value.name+"<ul>";
                $.each(value.institut, function(key1, value1)
                {
                     var son="<li id='second' data-param='"+value1+"'><a  href='#detail'>"+value1+"/a></li>";           
                    mother+=son;                    
                });
                mother+="</ul></li>";
                list.append(mother);  
            });
            list.listview("refresh");
            return false; 

        });   

次に、ユーザーがリスト項目をクリックしたことを検出しようとします。

$("#second").on("click",function(event) {
                        console.log($(this).text())
                })

しかし、これはうまくいきません。#first リスト要素に対しては機能しますが。何か案は?

4

1 に答える 1

2

つまり、ID は常に一意である必要があります...同じ ID を持つ要素が複数あります...同じ ID を持つ複数の要素を持つことはできません。これは無効ですが、機能しますが、問題のような大きな問題が発生する可能性があります現在直面しています(そのIDを持つ最初の要素のみが呼び出されます)。

IDをクラスに変更し、secondクラスセレクターを使用してください

 var son="<li class='second' data-param='"+value1+"'><a  href='#detail'>"+value1+"/a></li>";

jquery

 $("ul").on("click",'.second',function(event) {
         console.log($(this).text())
 })

注意してon()ください、あなたはそれを私がここにあると思う最も近い静的な親に委任する必要がありulます。そうでなければ、ドキュメントに委任できます

 $(document).on("click",'.second',function(event) {
   ...

ただし、ドキュメントに存在する最も近い静的な親を使用することをお勧めします。

于 2013-08-02T09:44:08.747 に答える