动态元素的jquery.Event

发布于 2024-09-18 14:33:22 字数 669 浏览 3 评论 0 原文

我的代码和我的问题是:

<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 没有设置任何内容时,出现错误。那么,我怎样才能得到我想要的东西呢?

非常感谢!!

my code and my problem is:

<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>

but.when I set the tagFlag,and click the "p" nothing is happen.BTW.there is error when tagFlag had been set nothing.So.How can I get what I want?

Thank you very much!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

暮年 2024-09-25 14:33:22

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

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

Maybe you should look at the jQuery live() method that will assign event to all existing and future elements.

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

老子叫无熙 2024-09-25 14:33:22

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

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

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

There is no element wit the ID "a1". If you want the first anchor element use

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

instead.

If that's not it, report back please.

没有心的人 2024-09-25 14:33:22

使用 jquery 对象并将单击的元素添加到其中:

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

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

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

});

use a jquery object and add the clicked elements to it:

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

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

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

});
岁月流歌 2024-09-25 14:33:22

您可以将 .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,有一些解决这个问题的方法:)

You can attach a .click() handler to document and check if the target of the click was the element you cared about, similar to how .live() behaves internally, like this:

$(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
    }
  });
});

You can give it a try here, the only change to your markup is the addition of a child element (to show click bubbling/handling working) and giving the anchor that a1 ID I think you intended for it to have in the question.

Alternatively if you know the set of elements that may be clicked, give them a class and bind a handler to them, checking the ID like I have above...or unbind the class and rebind to the specific ID each time, there's a few ways to go about this :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文