在 jQuery 中添加类在新类上运行函数

发布于 2024-11-27 03:25:10 字数 193 浏览 3 评论 0原文

我正在尝试将 Class 添加到 href,然后在该新类上运行一个函数。

问题是一旦添加了类,我就无法让任何 js 对其进行处理。

这是一个小提琴:

http://jsfiddle.net/3hp9f/2/

I'm attempting to addClass to an href, and then later run a function on that new class.

The problem is once the class is added, I can not get any js to work on it.

Here's a fiddle:

http://jsfiddle.net/3hp9f/2/

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

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

发布评论

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

评论(5

蓝色星空 2024-12-04 03:25:10

您有几个错误:

这可行:

$("a.theLink").click(function(event){
    event.preventDefault();
    $(this).addClass("live");
});

$("a.live").live('click',function(event){
    event.preventDefault();
    alert("YO!");
});

您需要防止默认事件行为,并添加面向未来的事件观察者,例如 live()delegate()因为您在设置绑定后将类添加到对象。

http://jsfiddle.net/AlienWebguy/3hp9f/16/

You have a couple errors:

This works:

$("a.theLink").click(function(event){
    event.preventDefault();
    $(this).addClass("live");
});

$("a.live").live('click',function(event){
    event.preventDefault();
    alert("YO!");
});

You need to prevent the default event behavior, and also add a future-proof event observer such as live() or delegate() since you are adding the class to the object after the bind has been set.

http://jsfiddle.net/AlienWebguy/3hp9f/16/

我的黑色迷你裙 2024-12-04 03:25:10

您在对象具有类之前附加 a.live 事件处理程序,将处理程序移动到第一个事件处理程序中,即

$("a.theLink").click(function(){
    $(this).addClass("live");
    $("a.live").click(function(){
         alert("YO!");
         return false;
     });
    return false;
});

这不是最好的方法,但我希望它告诉您出了什么问题。

You are attaching the a.live event handler before the object has the class, move the handler inside the first one, ie

$("a.theLink").click(function(){
    $(this).addClass("live");
    $("a.live").click(function(){
         alert("YO!");
         return false;
     });
    return false;
});

This is not the best way but I hope it shows you what is wrong.

风启觞 2024-12-04 03:25:10

您可以使用 live (API Ref) 方法来实现此目的,该方法附加所有当前和未来与选择器匹配的事件:

$("a.live").live('click', function(){
    alert("YO!");
    return false;
});

You can use the live (API Ref) method for this, which attaches an event to all current and future matches to the selector:

$("a.live").live('click', function(){
    alert("YO!");
    return false;
});
蓬勃野心 2024-12-04 03:25:10

给你:http://jsfiddle.net/Skooljester/KcG8g/。您需要使用 .live 而不是 .click

Here you go: http://jsfiddle.net/Skooljester/KcG8g/. You needed to use .live instead of .click.

就像说晚安 2024-12-04 03:25:10

尝试 this

$("a.theLink").click(function(){
    $(this).unbind('click').addClass("live");
    return false;
});

$("a.live").live('click', function(){
    alert("YO!");
    return false;
});

该代码与您的代码并不完全一样,但存在一些问题。我使用了 $('').live 但您可能希望将事件绑定到第一个单击事件中。另请注意,如果您从事件返回 false 而不是使用 PreventDefault,则只有第一个单击事件才会触发。

Try this

$("a.theLink").click(function(){
    $(this).unbind('click').addClass("live");
    return false;
});

$("a.live").live('click', function(){
    alert("YO!");
    return false;
});

The code isn't exactly how you had it but there are some issues. I used $('').live but you might want to bind the event inside of your first click event. Also know that if you return false from your events instead of using preventDefault only the first click event will fire.

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