欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

jquery span click 事件

shiping1 的头像

I have the following HTML

<a title="Prev" data-event="click" data-handler="prev" class="ui-datepicker-prev ui-corner-all">
       <span class="ui-icon ui-icon-circle-triangle-w">Prev</span>
   </a>

I need to change 'Prev' once click on span using jquery

this my code

$(".ui-icon.ui-icon-circle-triangle-w").click(function(){ 
    $(".ui-icon.ui-icon-circle-triangle-w").html('«');         
});

but it dows not work, Why?


Maybe your code is executed too early. And your html element just doesn't exist when your code is executed. So $(".ui-icon.ui-icon-circle-triangle-w") is just empty.

You can use this :

$("body").on('click', ".ui-icon.ui-icon-circle-triangle-w", function(){ 
    $(this).html('«');         
});   //这段代码经测试是对的
share|improve this answer
  

Give your <span> a class:

<a title="Prev" data-event="click" data-handler="prev" class="ui-datepicker-prev ui-corner-all">
       <span class="prevSpan ui-icon ui-icon-circle-triangle-w">Prev</span></a>

and then use it via jQuery:

$(".prevSpan").text("«");

You need a eventhandler for the click event, use .on()
finaly the code:

$(document).ready(function(){
  $('.prevSpan').on('click',function(){
    $(".prevSpan").text("«");
  });
});  //这段代码经测试是对的

Documentation for the .on() eventhandler http://api.jquery.com/on/

来自 http://stackoverflow.com/questions/13493850/onclick-on-span-using-jquery


jquery 动态生成html后click事件不触发原因

最近在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论。这里使用了动态加载的<span mid=’123456789′ class=’get_comment’>点击加载评论</span>。

然后再写

$(“.get_comment).click(function(){

//响应事件逻辑

})

,发现click事件并不会触发,使用控制台侦听也木有错误。百思不得其解时,将焦点落在动态加载上。

于是,使用jquery的live()函数,重写响应逻辑:

$(“.get_comment”).live(‘click’, function() {
var mid = $(this).attr(“mid”);
alert(mid);
});

这时候,jquery可以响应span 的click事件了。这里用到live函数委派事件,主要用于动态生成的HTML的事件响应。关于live()函数的作用,它最直观的好处在于可以一直“监听”客户端浏览器操作,对于新增的DOM节点也会有效,而不需要重新绑定。也许是因为这个“监听”可能会不断的去绑定、判断,会造成web应用性能问题,大家可以根据项目的复杂性选择性使用。关于live函数,这里有非常详细的阐述:

 

定义和用法

live() 方法为被选元素附加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素)。

语法

$(<em>selector</em>).live(<em>event</em>,<em>data</em>,<em>function</em>)
参数描述
event必需。规定附加到元素的一个或多个事件。

由空格分隔多个事件。必须是有效的事件。

data可选。规定传递到该函数的额外数据。
function必需。规定当事件发生时运行的函数。

2 Thoughts on “jquery 动态生成html后click事件不触发原因

  1. Pingback: cnblogs: jquery 动态生成html后click事件不触发原因 – PHP高级工程师 | 易站|工作室

  2. 不懂啊。。有没那种在线生成的啊。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

来自 http://www.iam3y.com/html/560.html




在正式开始本文之前,先来简单介绍下HTML的<a>标签:
使用<a>标签,我们可以在HTML页面上定义锚(anchor),锚有两种用法:
  1. 通过使用 href 属性,创建指向另外一个文档的链接(或超链接)
  2. 通过使用 name 或 id 属性,创建一个文档内部的书签(也就是说,可以创建指向文档片段的链接)

本文的内容与锚的第一种用法有关。

复制代码
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="Web.WebForm2" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head id="Head1" runat="server">
 6     <title></title>
 7     <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
 8     <script type="text/javascript">
 9         $(document).ready(function () {
10 
11             // 单击spanAGo,调用超链接的单击事件
12             $('#spanAGo').click(function () {
13                 $('#aGo').click();
14             });
15         });
16     </script>
17 </head>
18 <body style="font-size: 12px;">
19     <form id="form1" runat="server">
20     <div>
21         <a id="aGo" href="http://www.cnblogs.com/return8023/">剑过不留痕 - 博客园</a>
22         <br />
23         <br />
24         <span id="spanAGo" style="border: 1px solid black;">点击我,将调用以上超链接的单击事件</span>
25     </div>
26     </form>
27 </body>
28 </html>
复制代码
以上代码的运行效果如下图所示:

点击超链接,页面可以正常跳转;
但点击标签,页面却不可以跳转;
以上,在IE8和Chrome里都无法跳转(其他浏览器未测试)。
所以,接下来要实现的效果,就是在点击标签的时候让页面跳转(也就是在调用超链接的单击事件时,让页面跳转),且写的代码要少,且最好是在一个地方处理,一个项目不可能就一个页面,一个页面不可能就一个超链接,且不能做的太死,怎么说锚的另一个作用是书签,别链接是可以跳转了,锚的书签作用被屏蔽了,且……。

Main.css
Main.js
修改过后的页面源码如下:
复制代码
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="Web.WebForm2" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head id="Head1" runat="server">
 6     <title></title>
 7     <link type="text/css" rel="Stylesheet" href="Styles/Main.css" />
 8     <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
 9     <script type="text/javascript" src="Scripts/Main.js"></script>
10     <script type="text/javascript">
11         $(document).ready(function () {
12 
13             // 单击spanAGo,调用超链接的单击事件
14             $('#spanAGo').click(function () {
15                 $('#aGo').click();
16             });
17         });
18     </script>
19 </head>
20 <body style="font-size: 12px;">
21     <form id="form1" runat="server">
22     <div>
23         <a id="aGo" class="forward" href="http://www.cnblogs.com/return8023">剑过不留痕 - 博客园</a>
24         <br />
25         <br />
26         <span id="spanAGo" style="border: 1px solid black;">点击我,将调用以上超链接的单击事件</span>
27     </div>
28     </form>
29 </body>
30 </html>
复制代码
运行一下(截图略),点击标签,页面完美跳转,(*^__^*) 嘻嘻
好了,最后来总结一下,模拟超链接的用户单击事件,我们需要做的就是:
  1. 导入外部CSS文件,Main.css,导入外部JavaScript文件Main.js(必须在导入JQuery文件之后导入);
  2. 给超链接添加CSS类“forward”;
  3. 然后3是什么呢?然后想不出来然后了。
  4. 最后祝大家敲代码愉快。

首发:博客园->剑过不留痕,欢迎转载,前提是注明出处:http://www.cnblogs.com/return8023/archive/2012/05/19/2509177.html

来自
http://www.cnblogs.com/return8023/archive/2012/05/19/2509177.html
 

普通分类: