Python论坛  - 讨论区

标题:[python-chinese] [django+Jquery]页面Ajax方式填充后无法触发Jquery事件

2007年05月03日 星期四 13:37

俊杰蔡 yzcaijunjie在gmail.com
星期四 五月 3 13:37:55 HKT 2007

在list_consumer.html文件中部分内容:

{% block jscript %}
$(document).ready(function(){
    $("#dp_0_mhl").click(function(){
        $.get('/personal/premonth/',function(data){
            $("#calendar").html(data);
        });
        return false;
    });
});
(% endblock %)

{% block sidebar %}
« 5 »
{% endblock %} 另外根据/personal/premonth/地址,触发view function,return 一个template html内容为
« 4 »
这段代码的功能原本意思是想能点击<<就显示前一个月的名称,但发现问题是第一次进入list_consumer.html后,点击<<可以成功显示前一个月的名称,但第二次点击<<就无法在显示,即没有触发到$("#dp_0_mhl").click()事件,但我页面中明明是有id为"dp_0_mhl"的标签。所以我猜想问题原因可能是出在{% block jscript %}{% endblock %}中的内容,这段内容是放在base.html中 中,也就是说它只被调用一次,不知道我的分析对不对? 请问有什么其他方法能解决这样的问题么?最好能用Jquery的ajax技术和Django的template继承结合解决。 -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070503/ff38df26/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月03日 星期四 15:28

limodou limodou在gmail.com
星期四 五月 3 15:28:44 HKT 2007

On 5/3/07, 俊杰蔡 <yzcaijunjie在gmail.com> wrote:
> 在list_consumer.html文件中部分内容:
>
> {% block jscript %}
> $(document).ready(function(){
>     $("#dp_0_mhl").click(function(){
>         $.get('/personal/premonth/',function(data){
>             $("#calendar").html(data);
>         });
>         return false;
>     });
> });
> (% endblock %)
>
> {% block sidebar %}
> 
>
> > « > > 5 > > » > > > > {% endblock %} > > 另外根据/personal/premonth/地址,触发view function,return 一个template > html内容为 >
> > « > > 4 > > » > > > > 这段代码的功能原本意思是想能点击<<就显示前一个月的名称,但发现问题是第一次进入list_consumer.html后,点击<<可以成功显示前一个月的名称,但第二次点击<<就无法在显示,即没有触发到$("#dp_0_mhl").click()事件,但我页面中明明是有id为"dp_0_mhl"的标签。所以我猜想问题原因可能是出在{% > block jscript %}{% endblock %}中的内容, > 这段内容是放在base.html中中,也就是说它只被调用一次,不知道我的分析对不对? > 请问有什么其他方法能解决这样的问题么?最好能用Jquery的ajax技术和Django的template继承结合解决。 > 看到你的处理我想是因为第一次你绑定了事件没有问题,但是当事件执行后,你替换了原来的calendar层,但是原来所绑定的元素全部被替换掉了,所以对象已经不存在的,自象新的内容并没有绑定。因此你的处理要么只修改没有绑定的内容,要么在替换后绑定对新的元素进行绑定。虽然它们的id相同,但是对象已经不是原来的了。 -- I like python! UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月03日 星期四 16:01

俊杰蔡 yzcaijunjie在gmail.com
星期四 五月 3 16:01:18 HKT 2007

那么如何进行重新绑定呢?我曾尝试在template html中加入JQuery事件代码,作为data一并传送,但依然没有效果.

在07-5-3,limodou <limodou在gmail.com> 写道:
>
> On 5/3/07, 俊杰蔡 <yzcaijunjie在gmail.com> wrote:
> > 在list_consumer.html文件中部分内容:
> >
> > {% block jscript %}
> > $(document).ready(function(){
> >     $("#dp_0_mhl").click(function(){
> >         $.get('/personal/premonth/',function(data){
> >             $("#calendar").html(data);
> >         });
> >         return false;
> >     });
> > });
> > (% endblock %)
> >
> > {% block sidebar %}
> > 
> >
> > > > « > > > > 5 > > > > » > > > > > > > > {% endblock %} > > > > 另外根据/personal/premonth/地址,触发view function,return 一个template > > html内容为 > >
> > > > « > > > > 4 > > > > » > > > > > > > > > 这段代码的功能原本意思是想能点击<<就显示前一个月的名称,但发现问题是第一次进入list_consumer.html后,点击<<可以成功显示前一个月的名称,但第二次点击<<就无法在显示,即没有触发到$("#dp_0_mhl").click()事件,但我页面中明明是有id为"dp_0_mhl"的标签。所以我猜想问题原因可能是出在{% > > block jscript %}{% endblock %}中的内容, > > 这段内容是放在base.html中中,也就是说它只被调用一次,不知道我的分析对不对? > > 请问有什么其他方法能解决这样的问题么?最好能用Jquery的ajax技术和Django的template继承结合解决。 > > > > 看到你的处理我想是因为第一次你绑定了事件没有问题,但是当事件执行后,你替换了原来的calendar层,但是原来所绑定的元素全部被替换掉了,所以对象已经不存在的,自象新的内容并没有绑定。因此你的处理要么只修改没有绑定的内容,要么在替换后绑定对新的元素进行绑定。虽然它们的id相同,但是对象已经不是原来的了。 > > -- > I like python! > UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad > My Blog: http://www.donews.net/limodou > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20070503/37f6addd/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月03日 星期四 16:07

limodou limodou在gmail.com
星期四 五月 3 16:07:16 HKT 2007

On 5/3/07, 俊杰蔡 <yzcaijunjie在gmail.com> wrote:
> 那么如何进行重新绑定呢?我曾尝试在template
> html中加入JQuery事件代码,作为data一并传送,但依然没有效果.
>
在更新内容成功能,重新进行绑定。所以可以把绑定写成一个函数,以便重用。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月03日 星期四 17:32

俊杰蔡 yzcaijunjie在gmail.com
星期四 五月 3 17:32:23 HKT 2007

¸ÐлlimodouµÄ»Ø¸´¡£
ÎÒÏÖÔÚ²ÉÓú¯Êýµ÷ÓÃÊÇûÓÐÎÊÌâµÄ

hello

µ«ÔÚtest()·½·¨ÖÐÎÞ·¨Ê¹ÓÃʹÓÃJQuery·½Ê½£º

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

ÏñÉÏÃæÕâ¸öд·¨¾Í²»ÐÐ

ÔÚ07-5-3£¬limodou <limodou在gmail.com> дµÀ£º
>
> On 5/3/07, ¿¡½Ü²Ì <yzcaijunjie在gmail.com> wrote:
> > ÄÇôÈçºÎ½øÐÐÖØаó¶¨ÄØ£¿ÎÒÔø³¢ÊÔÔÚtemplate
> > htmlÖмÓÈëJQueryʼþ´úÂ룬×÷ΪdataÒ»²¢´«ËÍ£¬µ«ÒÀȻûÓÐЧ¹û.
> >
> ÔÚ¸üÐÂÄÚÈݳɹ¦ÄÜ£¬ÖØнøÐа󶨡£ËùÒÔ¿ÉÒÔ°Ñ°ó¶¨Ð´³ÉÒ»¸öº¯Êý£¬ÒÔ±ãÖØÓá£
>
> --
> I like python!
> UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
> My Blog: http://www.donews.net/limodou
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070503/123eaaf3/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]
cf

cf

2007年05月03日 星期四 18:11

ljpsfree caifen1985在gmail.com
星期四 五月 3 18:11:54 HKT 2007

你第一次点击元素的时候是给元素 重新绑定了onclick事件,之后再点击a才会弹出hello的提示框

On 5/3/07, 俊杰蔡 <yzcaijunjie在gmail.com> wrote:
> 感谢limodou的回复。
> 我现在采用函数调用是没有问题的
>
> hello
>
> 但在test()方法中无法使用使用JQuery方式:
>
> function test(){
>   $("#test").click(function(){
>      alert("hello");
>   });
> }
>
> 像上面这个写法就不行
>
> 在07-5-3,limodou <limodou在gmail.com> 写道:
> > On 5/3/07, 俊杰蔡 <yzcaijunjie在gmail.com> wrote:
> > > 那么如何进行重新绑定呢?我曾尝试在template
> > > html中加入JQuery事件代码,作为data一并传送,但依然没有效果.
> > >
> > 在更新内容成功能,重新进行绑定。所以可以把绑定写成一个函数,以便重用。
> >
> > --
> > I like python!
> > UliPad <>:
> http://wiki.woodpecker.org.cn/moin/UliPad
> > My Blog: http://www.donews.net/limodou
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> > Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request在lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>


-- 
蔡峰 Cai Feng

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月03日 星期四 18:13

limodou limodou在gmail.com
星期四 五月 3 18:13:40 HKT 2007

On 5/3/07, 俊杰蔡 <yzcaijunjie在gmail.com> wrote:
> 感谢limodou的回复。
> 我现在采用函数调用是没有问题的

采用函数可以是因为它与html是在一起的,当替换内容时,相应的js代码也又执行了一次,所以起作用。而jquery的方式是第一次所绑定的对象随着内容变化已经不再起作用,因此要重新绑定。你需要在更新html内容之后再执行绑定处理才可以。
>
> hello
>
> 但在test()方法中无法使用使用JQuery方式:
>
> function test(){
>   $("#test").click(function(){
>      alert("hello");
>   });
> }
>
> 像上面这个写法就不行
>

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]
cf

cf

2007年05月03日 星期四 18:17

ljpsfree caifen1985在gmail.com
星期四 五月 3 18:17:28 HKT 2007

你填充html代码的时候,页面中原来的dp_0_mhl被替换掉了,也就是说新的dp_0_mhl并没有绑定click事件,你需要重新绑定一下。

 {% block jscript %}
  function click_function(){
    $.get('/personal/premonth/',function(data){
             $("#calendar").html(data);
              bind_event();
         });
  }
  function bind_event(){
     $("#dp_0_mhl").click(
         click_function();
         return false;
     });
  }
 $(document).ready(function(){
     bind_event();
 });
 (% endblock %)


On 5/3/07, 俊杰蔡 <yzcaijunjie在gmail.com> wrote:
> 在list_consumer.html文件中部分内容:
>
> {% block jscript %}
> $(document).ready(function(){
>     $("#dp_0_mhl").click(function(){
>         $.get('/personal/premonth/',function(data){
>             $("#calendar").html(data);
>         });
>         return false;
>     });
> });
> (% endblock %)
>
> {% block sidebar %}
> 
>
> > « > > 5 > > » > > > > {% endblock %} > > 另外根据/personal/premonth/地址,触发view function,return 一个template > html内容为 >
> > « > > 4 > > » > > > > 这段代码的功能原本意思是想能点击<<就显示前一个月的名称,但发现问题是第一次进入list_consumer.html后,点击<<可以成功显示前一个月的名称,但第二次点击<<就无法在显示,即没有触发到$("#dp_0_mhl").click()事件,但我页面中明明是有id为"dp_0_mhl"的标签。所以我猜想问题原因可能是出在{% > block jscript %}{% endblock %}中的内容, > 这段内容是放在base.html中中,也就是说它只被调用一次,不知道我的分析对不对? > 请问有什么其他方法能解决这样的问题么?最好能用Jquery的ajax技术和Django的template继承结合解决。 > > > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to > python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to > python-chinese-request在lists.python.cn > Detail Info: > http://python.cn/mailman/listinfo/python-chinese > -- 蔡峰 Cai Feng

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月03日 星期四 18:20

limodou limodou在gmail.com
星期四 五月 3 18:20:32 HKT 2007

On 5/3/07, ljpsfree <caifen1985在gmail.com> wrote:
> 你填充html代码的时候,页面中原来的dp_0_mhl被替换掉了,也就是说新的dp_0_mhl并没有绑定click事件,你需要重新绑定一下。
>
>  {% block jscript %}
>   function click_function(){
>     $.get('/personal/premonth/',function(data){
>              $("#calendar").html(data);
>               bind_event();
>          });
>   }
>   function bind_event(){
>      $("#dp_0_mhl").click(
>          click_function();
>          return false;
>      });
>   }
>  $(document).ready(function(){
>      bind_event();
>  });
>  (% endblock %)
>
>
不错,正解。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月03日 星期四 18:36

俊杰蔡 yzcaijunjie在gmail.com
星期四 五月 3 18:36:22 HKT 2007

ÄÇô°ó¶¨Ê¼þ¸ÃÈçºÎдÄØ£¿

> function bind_event(){
>     $(document).ready(function(){
>     $("#dp_0_mhl").click(function(){
>             alert("Hello ,bind_event");
>             return false;
>         });
>     });
>
> }
>

function bind_event(){
>     $("#dp_0_mhl").click(function(){
>             alert("Hello ,bind_event");
>             return false;
>         });
> }
>

¶¼²»Æð×÷ÓÃÄØ¡£

ÔÚ07-5-3£¬limodou <limodou在gmail.com> дµÀ£º
>
> On 5/3/07, ljpsfree <caifen1985在gmail.com> wrote:
> > ÄãÌî³ähtml´úÂëµÄʱºò£¬Ò³ÃæÖÐÔ­À´µÄdp_0_mhl±»Ìæ»»µôÁË£¬Ò²¾ÍÊÇ˵еÄdp_0_mhl²¢Ã»Óаó¶¨clickʼþ£¬ÄãÐèÒªÖØаó¶¨Ò»Ï¡£
> >
> >  {% block jscript %}
> >   function click_function(){
> >     $.get('/personal/premonth/',function(data){
> >              $("#calendar").html(data);
> >               bind_event();
> >          });
> >   }
> >   function bind_event(){
> >      $("#dp_0_mhl").click(
> >          click_function();
> >          return false;
> >      });
> >   }
> >  $(document).ready(function(){
> >      bind_event();
> >  });
> >  (% endblock %)
> >
> >
> ²»´í£¬Õý½â¡£
>
> --
> I like python!
> UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
> My Blog: http://www.donews.net/limodou
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070503/48879c6d/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号