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”时什么也没有发生。顺便说一句。当tagFlag 没有设置时出现错误。那么。我怎样才能得到我想要的?

非常感谢!!

4

4 回答 4

0

也许您应该查看live()将事件分配给所有现有和未来元素的 jQuery 方法。

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

于 2010-09-12T15:16:41.577 回答
0

ID“a1”没有元素。如果你想要第一个锚元素使用

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

反而。

如果不是这样,请回来报告。

于 2010-09-12T15:45:36.060 回答
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

使用 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 回答