首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress Widget jquery ()或on(),管理端

Wordpress Widget jquery ()或on(),管理端
EN

Stack Overflow用户
提问于 2012-12-21 09:32:31
回答 1查看 557关注 0票数 1

有件事困扰了我一段时间了,jQuery API说:

代码语言:javascript
复制
As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers.

当我试图在我的小部件管理端(小部件类的表单()操作)中添加一些jquery内容时,我惊讶地发现无法使用on(),而使用live()来完成这项工作。

所以我的问题是:,为什么,我误解了什么?

向你问好,当然还有你的时间。

ps我使用>= 1.7版本摆脱诅咒。

编辑:

代码语言:javascript
复制
<?php
    class Test_Slider_Widget extends WP_Widget 
        { 
            public function form( $instance ) { 
                ?>
             <span id="test">Test</span>
             <script> 
             jQuery(document).ready(function($) {
                 /* $('#test').on('click', function { //doesn't work
                     alert('test'); 
                 }); */
                 $('#test').live('click', function { //work
                     alert('test');
                 });

             });
             </script>


 <?php }

编辑2:好,总是使用$this->get_field_ id ('id-text')来拥有唯一的ID,否则id将被复制,这是wordpress管理中小部件重复代码的原因。感谢Xec为我指明了方向:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-21 12:02:42

不推荐的.live()方法绑定到document,每次单击都会检查#test选择器在调用处理程序之前是否匹配。如果希望在.on()中使用此行为,则可以使用委托语法。

有关更详细的信息,请查看http://api.jquery.com/on/#direct-and-delegated-events

为了进行快速修复,您可以使用以下内容来模拟.live()代码:

代码语言:javascript
复制
$(document).on('click', '#test', function () {
    alert('test');
});

为了获得更有效的代码,您可以用一个与document的静态祖先匹配的选择器替换#test

希望这能有所帮助!

编辑:

从你的“编辑2”,我知道你的问题是重复的i,但我会把这个答案留给后人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13987518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档