Jquery函数问题

时间:2011-07-18 20:31:00

标签: jquery

我的Jquery函数有问题。 简化代码如下所示:

$(document).ready(function(){

    $(".brs").toggle(function() {
        var commid=$(this).attr('kid');
        $('.comment'+commid).html('the new text - <a href="javascript: void(0)"  class="brs2" kid="'+ commid +'">click to change the text</a>');
    }, function () {
        var commid=$(this).attr('kid');
        $('.comment'+commid).html('new text');
    });

    $(".brs2").click(function() {
        alert("test"); 
    });

});

HTML code:

<div class="comment1">some text</div> | <a href="javascript: void(0)"  class="brs" kid="1">test link</a>

当文本在div“comment1”中更改时,运行另一个函数(类“brs2”)的链接不起作用。可能是什么问题?

感谢所有的消遣。

编辑:

如果Jquery代码如下:

$(document).ready(function(){
$(".brs").toggle(function() {
var commid=$(this).attr('kid');
$('.comment'+commid).html('the new text - <a href="javascript: void(0)"  class="brs" kid="'+ commid +'">click to change the text</a>');
}, function () {
var commid=$(this).attr('kid');
$('.comment'+commid).html('new text');
});

$(".brs2").click(function() {
alert("test"); 
});

});

HTML:

<div class="comment1">some text</div> | <a href="javascript: void(0)"  class="brs" kid="1">test link</a>

我不能使用live()通过comment1 div中出现的新链接触发相同的切换功能吗?

3 个答案:

答案 0 :(得分:3)

因为加载页面时链接(.brs2)不在DOM中。您必须live();绑定click事件。

$('.brs2').live('click', function(){
    alert('test');
});

你也可以使用delegate();,但这对于这么简单的任务来说太过分了,而且有点复杂。

更新

如果我正确理解了问题,您可以在live上绑定多个事件,或者delegate可以{{1}}。请在此处查看帖子 - Using jQuery .live with toggle event - 它应该为您提供所需的信息。我明天才能提供答案,现在已经很晚了。

答案 1 :(得分:1)

使用live代替click因为您在DOM

中动态插入链接
$(".brs2").live('click',function() {
alert("test");
});

这里是小提琴http://jsfiddle.net/7E8aG/1/

这是指向jquery live http://api.jquery.com/live/

的链接

修改

如果我理解得很好,你可以这样做

$(".brs2").live('click',function() {
    if($(this).is(':visible'))
    {
        $(this).fadeOut("slow");
        $("div.comment1").html("new text");
    }    
});

http://jsfiddle.net/7E8aG/2/

答案 2 :(得分:0)

或者做:

$('.comment'+commid+' .brs2').click(function() {
        alert("test"); 
});

在第一个切换功能中进行html操作后