1

これは私がしばらく立ち往生していました... onclick JavaScript呼び出しに関する私のWeb検索には、onClickのように大文字のCが含まれている場合と、onclickの場合があります。私のコードは JQuery Mobile アプリの一部ですが、onclick は JS です。したがって、次のようになります。

domEntry = '<li><a href="#poet-details"';
domEntry += ' onclick="getPoetDetails('+ poet_name + ')">';
domEntry += poet_name;
domEntry += '</a></li>';

それをdivに追加します。'poet_name は 3 行目で正しく表示されます。getPoetDetails でアクセスするにはどうすればよいですか? 私はそれを正しく呼びましたか?また、参照してください: http://jsfiddle.net/brucewhealton/XF5AJ/

関数 getPoetDetails は、指定されたリンクで見ることができます。イベント オブジェクト変数を介してアクセスしますか? アプリケーションはクエリ文字列を別の場所 dbpedia.org/sparql に送信し、JSON を取得します。2 番目のクエリで詩人の詳細を取得するには、poet_selected または poet_name が必要です。DBpedia.org の「Poets_by_nationality」のカテゴリからユーザーに国籍を選択させることでアプリを起動できるように、これを理解したいと考えています。私の問題は、ユーザーの選択、JQuery Mobile アプリでクリックまたはタップしたものをキャプチャし、それを別の関数に送信することです。ありがとう、ブルース

4

3 に答える 3

1

が文字列の場合poet_nameは、引用符で囲む必要があります。

domEntry += ' onclick="getPoetDetails(\''+ poet_name + '\')">';

したがって、結果のHTMLは次のようになります。

onclick="getPoetDetails('Henry Abbey')"

getPoetDetailsまた、関数をグローバルにするには、jsfiddle設定から「onLoad」ではなく「nowrap」を選択する必要があります。

編集:これを行う別の方法は次のとおりです。

domEntry = '<li><a href="#poet-details" class="poet">';
domEntry += poet_name;
domEntry += '</a></li>';

次に、ループの直後:

$('.poet').click(function() {
    getPoetDetails($(this).text());
});
于 2012-10-03T01:55:28.433 に答える
1

詩人の名前のアンカー タグの onClick に問題がありますか? これを行う最善の方法は、インライン JavaScript を使用しないことです。これにより、準備が整ったウィンドウでJavaScriptを開始するとき、または実行することを選択したときに、この小さな行を追加する必要があります

$('#result').delegate('a', 'click', getPoetDetails);

これにより、jQuery は #result の内部を調べ、新しいアンカー タグがあるたびにこのクリック イベントをそれに適用するように指示されます。クリック イベントは getPoetDetails を呼び出す必要があります。

アンカータグを作成して挿入する場所では、javascript のものを取り除き、代わりにこれを使用する必要があります

domEntry = '<li><a href="#poet-details"';
domEntry += 'data-name="'+ poet_name + '">';
domEntry += poet_name;
domEntry += '</a></li>';

これは、詩人の名前の値を持つ name のデータ値をアンカーに与えています。これで、jQuery を使用して getPoetDetails 関数内でこのデータを取得できます。始まりはこれで、残りはそのまま。

var getPoetDetails = function(){
var poet_name_selected = $(this).data('name');
// show loader

JSONデータを取得するために呼び出しているときに何か間違ったことをしている、または間違って解析していると確信していますが、少なくとも getPoetDetails によって名前が正しく取得されています. これを jsfiddle で動作するように表示するには、js でドキュメントの準備ができているため、onLoad ドロップダウンを noWrap ボディに変更する必要があります。

これが役立つことを願っています。

于 2012-10-04T18:26:27.693 に答える
0

あなたの質問を正しく理解できれば、宣言されている getPoetDetails(poet_name_selected) 関数で、poet_name_selected は、poet_name になります。

于 2012-10-03T01:50:09.013 に答える