标签: jquery-on

如何在动态加载的脚本中使用jQuery on()

如果我有以下html:

<html>
   <div id="main_content">
      <button>click me</button>
      <script src="main.js" ></script>
   </div>
</html>
Run Code Online (Sandbox Code Playgroud)

和main.js:

$('#main_content').on('click', 'button', function() {
    console.log('you clicked');
});
Run Code Online (Sandbox Code Playgroud)

如果我执行整页加载,则单击该按钮仅注册一个控制台消息.但是,如果我随后main_content's通过AJAX请求重新加载内容,则每次单击按钮都会发出2条控制台消息.它将为每个后续的AJAX加载提供3,4,5 ...消息,但总是一个用于整页重新加载.

有人可以解释这种行为并提出可行的解决方案吗?

javascript ajax jquery jquery-on

2
推荐指数
1
解决办法
147
查看次数

从.live更改为.on

我知道.live是折旧的,最近我正在更新页面并意识到我正在使用.live我想切换到.on但不明白要改变什么.这是我目前的代码:

    //Script for Choosing which form to display
$("#email-button, #text-button").live('click',
function(){  

    //figure out what button was clicked. 
    if(this.id === "email-button"){
        var btnA = $(this);
        var btnB = $("#text-button");
        var divA = $('#email-form');
        var divB = $('#text-form');
    }
    else{
        btnA = $(this);
        btnB = $("#email-button");
        divA = $('#text-form');
        divB = $('#email-form');
    }

    //make sure it is not already active, no use to show/hide when it is already set
    if(btnA.hasClass('dark_button_span')){
        return; 
    }

    //see if div is …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-on

2
推荐指数
1
解决办法
134
查看次数

.live()jQuery - 如何更改我的事件

如何将这些事件更改为.live()事件处理程序?

我以为我可以只更改$(document).ready(function()... to .... $(document).live(function()以及.keydown和.data到.live但我不能似乎让它工作......请帮助.

$(document).ready(function(){
                $('#number').bind('keyup change focus', function(){
                        var field = this;
                        timer = setTimeout(function(){runSearch(field);}, 444);});                      
                $('#number').keydown(function(){clearTimeout(timer);});                 
                //url selection by specifics                
            $('#phone_book tr').data('bgcolor', '#aaf').hover(function(){
                 var $this = $(this);
                 var newBgc = $(this).data('bgcolor');
            $(this).data('bgcolor', $(this).css('background-color')).css('background-color', newBgc);
                 });  
                //url selection by specifics  
                $("#phone_book tr").click(function(){
                        var id = $(this).children().first().html();
                        var type = $(this).parents('table').siblings('div.module_header').html().toLowerCase();
Run Code Online (Sandbox Code Playgroud)

jquery jquery-on

2
推荐指数
1
解决办法
106
查看次数

如何在DOM中的每个元素中调用函数,即使它们是动态创建的

我想在我的DOM上调用特定元素的函数,例如:

$(".red").css({backgroundColor: "pink"});
Run Code Online (Sandbox Code Playgroud)

它的工作原理确定为已经存在的到DOM任何元素,但我也希望这种方法在动态添加到DOM元素被调用.

我尝试过这样的事情:

$(".red").on(function(){ this.css({backgroundColor: "pink"}) });
Run Code Online (Sandbox Code Playgroud)

要么:

$(".red").on("load", function(){ this.css({backgroundColor: "pink"}) });
Run Code Online (Sandbox Code Playgroud)

但没有任何成功.

检查jsFiddle

更新

这个.css()电话只是一个例子,我实际上想要调用其他类型的函数

javascript jquery jquery-on

2
推荐指数
1
解决办法
2716
查看次数

JQuery On方法不起作用

我在Firefox中遇到此错误:TypeError:$("#main-CNTR").on不是函数.而这段代码根本不起作用:

$(document).ready(function(){
    $('#main-CNTR').on('mouseenter','.social_span',function(){
        alert("INSIDE");
    });
    $('#main-CNTR').on('mouseleave','.social_span',function(){
        alert("OUTSIDE");
    });
});
Run Code Online (Sandbox Code Playgroud)

HTML部分就是这个

    <span class="social_span"></span>
    <div class="row clearfix" style="display:none;">
        <ul class="social-buttons cf">
            <li>1</li>                                    
        </ul>
    </div>
Run Code Online (Sandbox Code Playgroud)

鼠标进入范围时,应显示一条消息并显示下一个div.显然div#main-CNTR是主要的内容容器div,HTML片段在页面中重复多次.

实时方法正常工作但不在ie8中.

$('.social_span').live('mouseenter',function(){
    alert("INSIDE");
});
$('.social_span + .row').live('mouseleave',function(){
    alert("OUTSIDE");
});
Run Code Online (Sandbox Code Playgroud)

谁能帮我?谢谢!

    <script type="text/javascript" src="/js/libs/modernizr-2.5.3.min.js"></script>
    <script type="text/javascript" src="/js/jQuery/engine/core8.js"></script>
    <script type="text/javascript" src="/js/jQuery/engine/ui.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.tools.min.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.easing.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.lavalamp.min.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.fancybox.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.li-scroller.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.reflection.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.jcarousel.min.js"></script>
    <script type="text/javascript" src="/js/jQuery/plugin/jquery.selectbox.js"></script>
Run Code Online (Sandbox Code Playgroud)

jquery internet-explorer-8 jquery-on

1
推荐指数
1
解决办法
2425
查看次数

jQuery on('hover')事件替换

我想在悬停时交换一个img src.通常我会使用:

$('#img').hover(function() {
    $(this).attr('src', 'http://www.example.com/new-img.jpg');
});
Run Code Online (Sandbox Code Playgroud)

但是,我正在通过Ajax加载内容,所以通常我会使用:

$('#main').on('hover', '#img', function() {
    $('#img').attr('src', 'http://www.example.com/new-img.jpg');
});
Run Code Online (Sandbox Code Playgroud)

但我正在阅读('hover',...)在jQuery 1.8中被弃用并在1.9中被删除(jQuery Docs))中,这是我目前正在使用的.除了使用以外,有没有人有任何工作:

$('#main').on('mouseenter', '#img', function() {
   $('#img').attr('src', 'http://www.example.com/new-img.jpg');
});

$('#main').on('mouseleave', '#img', function() {
   $('#img').attr('src', 'http://www.example.com/old-img.jpg');
});
Run Code Online (Sandbox Code Playgroud)

jquery jquery-hover jquery-on

1
推荐指数
2
解决办法
869
查看次数

jQuery .on("click") - 替代.live()

在我的项目中,我将几个按钮附加到div:

$(".tab-content").append("<div class='landing_content'><button class='off-screen-nav-button btn btn-info btn_edit' data-effeckt='effeckt-off-screen-nav-right-overlay'>Edit</button></div>");
Run Code Online (Sandbox Code Playgroud)

然后使用以下代码监听单击:

$(".tab-content").on("click",".btn-edit",function(){
  console.log('edit');
});
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我习惯使用.live()但它已被弃用.

谢谢.

html javascript jquery jquery-on

1
推荐指数
1
解决办法
8160
查看次数

jQuery .on()无法正常工作

这将是一个难以解释的...

我有一个按钮,这是一个自定义按钮.

<button class="like-post">Like Post</button>
Run Code Online (Sandbox Code Playgroud)

在用户单击之后,我执行AJAX调用并向数据库添加一行,然后添加和删除该类.

btn.removeClass('btn-success')
          .removeClass("like-post")
          .addClass('btn-default')
          .addClass('unlike-post')
          .html("<span class='glyphicon glyphicon-remove'></span> Un-like");
Run Code Online (Sandbox Code Playgroud)

这一切都运行正常,除非在课程改为'不匹配'之后,按钮仍然会对类似后的类触发器做出反应.

所以我有这个:

$(".like-post").on('click', function(){ });
Run Code Online (Sandbox Code Playgroud)

即使在按钮没有类似帖子之后,也会执行该操作.我已经检查过,该课程肯定会被删除/正确添加.

我想用不同的帖子类进行另一个动作,但是在解决之前不能这样做.

我注意到我网站上其他地方有关于.on()的类似问题.我无法在jsFiddle中重现这个问题,因为它在那里工作得很好.

使用bootstrap +最新的jQuery版本.有任何想法吗?我知道这是一个很长的镜头,但认为有人可能有类似的问题.

谢谢.

javascript jquery jquery-on

1
推荐指数
1
解决办法
66
查看次数

更改为引导表后,"click"上的jQuery不会触发

情况

我正在使用bootstrap根据对象数组中的值呈现表.我有一个附加了jQuery on('change')方法的select,这样当选择列表中的项时,将根据所选值呈现一个新表.

当单击顶行时,该表使用bootstrap collapse来显示/隐藏表中的行.行中的最后一项有一个glyphicon箭头,表示该行可以折叠/展开,如下图所示

用glyphicon崩溃

我使用下面的jQuery来切换图标

$('#tog').on('click', function() {
  console.log("tog clicked");
  $(this).find('span').toggleClass('glyphicon-arrow-up glyphicon-arrow-down');
});
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所有的工作正如这个小提琴所示http://jsfiddle.net/vgfb74u0/

问题

我面临的问题是,当基于所选项呈现新表时,更改字形的jQuery不会触发,因此当表展开时,图标保持不变.

我在方法的开头放了一些console.log,我从来没有看到它被触发.所以对我的新手来说,点击事件永远不会被触发.

令我感到惊讶的是,我已经设法达到这个目标并且不知道问题可能是什么,所以任何帮助,指针或建议都是最受欢迎的!

html javascript jquery twitter-bootstrap jquery-on

1
推荐指数
1
解决办法
492
查看次数

使用jQuery .on与使用.live?

简单的问题,因为jQuery .live()的1.7版本已经被弃用,而不是.on(); 但.on()似乎不适用于通过JavaScript呈现并加载到DOM中的元素.所以我的问题是,应该仍然使用.live()或.on()如何捕获这些新生成的元素?

举个例子,这是我的代码:

$("#listitem").append("<li id='removeitem'>" + 
       formdata + ' <a href="#">Remove</a></li>');
Run Code Online (Sandbox Code Playgroud)

当我尝试通过.on()操作这个元素时 - 结果什么都没有,而.live()能够抓住这个元素.

$("#removeitem").live("click", function(event) { alert($(this).text()); });
Run Code Online (Sandbox Code Playgroud)

jquery jquery-on

0
推荐指数
1
解决办法
127
查看次数

live()和on()方法,以及FF浏览器

我有这个使用live方法的代码,它适用于Opera和Chrome:

 $(".dynamicaly_created_div").live("click",function(){
    $(event.target).parent().remove();
 });
Run Code Online (Sandbox Code Playgroud)

但不是在FF.所以我试图将"live"替换为"on"(我读过somwhere,现场已被弃用).但是,这在任何浏览器中都不起作用.

对此有任何解决方案吗?

jquery jquery-selectors jquery-on

0
推荐指数
1
解决办法
49
查看次数

jQuery .on无法正常工作

我正在使用分页和jQuery,我的代码首先看起来像这样:

$(function() {
    $(".pagination a").live("click", function() {
        $.get(this.href, null, null, "script");
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我注意到live在jQuery 1.9中删除了所以我将代码更改为:

$(function() {
    $(".pagination").on("click", 'a', function() {
        $.get(this.href, null, null, "script");
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

但不知怎的,这也行不通!问题是我可以从第一个ajax页面导航到第二个页面,然后将第二个页面导回到第一个页面或第三个页面,我的ajax不起作用.我太习惯了,因为我的代码没有注意到新添加的内容.pagination a.

jquery jquery-on

-1
推荐指数
1
解决办法
127
查看次数