Jquery类及其功能

时间:2012-04-16 18:35:41

标签: c# javascript jquery asp.net ajax

我正在asp.net中开发讨论小组,我正在通过javascripts绘制一些范围

  

$("#commenttr").after("<tr id="+i+"><td class=\"labelPortion\"></td><td class=\"controlPortion\">" +out[i]+ "</td><td><span style = \"cursor:pointer\" class = \"plblAgreeComment\" id = \"" + ids[i+1] + "\"> Vote Up </span> <span style = \"cursor:pointer\" class = \"plblDisAgreeComment\" id = \"" + ids[i+1] +"\">Vote Down </span><span id = \"ptxtAgreeComment\" >"+ agrees[i+1] + " </span></td></tr>");

但是当我调用jquery函数时

$(".plblAgreeComment").click(function(){
    alert("hi");
}

它不起作用。请帮帮我。

5 个答案:

答案 0 :(得分:3)

描述

您需要jQuery .live().on()方法将事件绑定到动态创建的html。

根据您使用的jQuery版本,选择.live().on()

  

.live()自jQuery 1.3起可用。为现在和将来与当前选择器匹配的所有元素附加事件处理程序。

     

.on()自jQuery 1.7起可用。将一个或多个事件的事件处理函数附加到所选元素。

示例

$(".plblAgreeComment").live('click', function(){
     alert("hi");
});

$(".plblAgreeComment").on('click', function(){
     alert("hi");
});

更多信息

更新:jsFiddle Demonstration

答案 1 :(得分:2)

使用jQuery on,因为您要动态地将这些项添加到DOM

 $(function(){
    $("body").on("click",".plblAgreeComment",click(function(){
            alert("hi");
    });
  });

on适用于当前元素和未来元素。

http://api.jquery.com/on/

on可从jQuery 1.7开始使用,如果您使用的是旧版jQuery,则应检查live http://api.jquery.com/live/

答案 2 :(得分:0)

尝试使用以下语法中的.on

$(document).on('click', '.plblAgreeComment', function(){
    alert("hi");
});

在上面的代码中,使用表格选择器而不是文档选择。

答案 3 :(得分:0)

两件事......在为你的行生成html时,你可能在类名中有一个额外的字符。

class = \"plblAgreeCom 

也许应该是:

class =\"plblAgreeCom 

或者您在修改DOM之前附加了点击处理程序,在这种情况下:

 $(".plblAgreeComment").click(function(){
        alert("hi");
}

应该是:

 $(".plblAgreeComment").live("click", function(){
        alert("hi");
}

答案 4 :(得分:0)

如果要将事件绑定到动态注入的DOM元素,则需要使用on方法,以便将任何新元素绑定到该事件侦听器:

 $(".plblAgreeComment").on("click", function(){
    alert("hi");
 }

注意:还有其他方法,例如live()会产生类似的效果,但是它们被弃用而不是on,它会针对每种情况处理这种情况。