2

私のコードと私の問題は次のとおりです。

<script type="text/javascript">
$(document).ready(function() {
  // this variable is used to set the dynamic elements
  tagFlag = '';

  $("#a1").click(function(event) {
      event.preventDefault();
      tagFlag = 'me';  // setting the element which I want to trigger later
  });

  $('#'+tagFlag).click(function(e) {
      // do sthing here
  });
});

</script>
</head>

<body>
<a href="">make the element</a>
<p id="me">some words here</p>
</body>
</html>

しかし、tagFlag を設定して「p」をクリックしても何も起こりません。

どうもありがとうございました!!

4

4 に答える 4

0

.click()次のように、ハンドラをアタッチしてdocument、クリックのターゲットが関心のある要素であるかどうかを確認できます.live()

$(function() {
  var tagFlag = '';
  $("#a1").click(function(event) {
      event.preventDefault();
      tagFlag = 'me';
  });
  $(document).click(function(e) { 
    if(tagFlag &&                  //is it even set?
       (e.target.id == tagFlag || $(e.target).closest('#'+tagFlag).length)) {
          //do work here
    }
  });
});

ここで試してみることができます。マークアップへの唯一の変更は、子要素の追加 (クリックのバブリング/処理の動作を示すため) と、質問で意図したと思わa1れるID をアンカーに与えることです。

または、クリックできる要素のセットがわかっている場合は、それらにクラスを与えてハンドラーをそれらにバインドし、上記のようにIDを確認します...または、クラスのバインドを解除して、毎回特定のIDに再バインドします。いくつかありますこれについて行く方法:)

于 2010-09-12T17:54:15.913 に答える
0

live()おそらく、既存および将来のすべての要素にイベントを割り当てるjQuery メソッドを確認する必要があります。

http://api.jquery.com/live/

于 2010-09-12T15:16:41.577 に答える
0

jquery オブジェクトを使用して、クリックした要素をそれに追加します。

$(document).ready(function() {
  $tagFlag = $("");

  $("#a1").click(function(event) {
    event.preventDefault();
    $tagFlag.add($(this));
  });

  $tagFlag.click(function(e) {
    // do sthing here
  });

});
于 2010-09-12T16:21:35.930 に答える
0

ID「a1」を含む要素はありません。最初のアンカー要素が必要な場合

$.("a:eq(0)")

代わりは。

そうでない場合は、戻って報告してください。

于 2010-09-12T15:45:36.060 に答える