想通过jquery自己创建的链接来执行操作

时间:2013-06-20 11:51:21

标签: jquery onclick

我不知道如何在这里提出我的问题,我将在这里复制我的代码,更好的解释完美,我有一个带有'a'类的p标签

<p class="a">Test</p>

我在这里使用的jquery是 -

jQuery(document).ready(function($){


    $('.a').click(function(){
   (jQuery('<a href="home" class="b">Super Test</a>')).insertAfter('.a');

 return false;
 });



$('.b').on('click', function(){
    alert('hai');
    return false;
});
});

好的,当我点击带有'a'类的p标签时,它成功插入了一个带有'b'类的链接,这里我想要的是如果我点击带有'b'类的链接我想做点什么。我不知道是否有可能或者我问一个愚蠢的问题,如何可能请帮助我解决方案或者如果有任何其他方法来实现这一点,请分享。谢谢。因为实际上我想在我的项目中克服这种类型的情况,实际上通过ajax获得一些链接,然后如果客户点击这些链接(通过ajax创建)想要使用ajax本身显示某些内容。

5 个答案:

答案 0 :(得分:0)

您必须使用.b委派.on()

$(document).on('click', '.b', function() {
  // your code
});

将文档替换为最接近b所在位置的元素,并在加载DOM时存在于页面上。这样可以防止点击事件直接传播到document

答案 1 :(得分:0)

尝试使用.append(),您需要为锚标记操作添加防止默认值,例如

$('.a').on('click',function(e){
   e.preventDefault();
   jQuery('.a').append('<a href="home" class="b">Super Test</a>');      
});

并且在delagate方法中你可以给出类似的

$(document).on('click','.a',function(){
   e.preventDefault();
   jQuery('.a').append('<a href="home" class="b">Super Test</a>');      
});

答案 2 :(得分:0)

这是可能的,您的代码正在运作 只需在点击方法

中添加preventDefault即可

答案 3 :(得分:0)

您的代码正常运行,您必须添加e.preventDefault()以防止发生默认事件。如果你仍然有同样的问题,如果你使用旧版本的jquery 使用live()代替on()

  

.live()已弃用,并且在版本1.7之前未引入.on()。

修改
如果你正在使用新版本的jQuery,只需使用类似的东西:

    $('.a').click(function(e){
        e.preventDefault();
        $('.a').after(' <a href="home" class="b">Super Test</a> ');
    });


$(document).on('click', '.b', function(e) {
            e.preventDefault();
            alert('hai');
});

工作示例: http://jsfiddle.net/ouadie/Hw9Qa/

答案 4 :(得分:0)

$(document).on('click', '.b', function(e){
    e.preventDefault();
    alert('hai');
    return false;
});

jQuery API .on()