我的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中出现的新链接触发相同的切换功能吗?
答案 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");
}
});
答案 2 :(得分:0)
或者做:
$('.comment'+commid+' .brs2').click(function() {
alert("test");
});
在第一个切换功能中进行html操作后