【问题标题】:How can we attach a jquery function to a div that has been appended after the page was loaded, without any event being triggered [closed]我们如何将jquery函数附加到页面加载后附加的div,而不触发任何事件[关闭]
【发布时间】:2012-12-21 06:33:40
【问题描述】:

我们如何将 Jquery 函数附加到页面加载后附加的 div,而不触发任何事件。

在下面的示例中,defaultTab-28 是 稍后添加到页面的 div。

<a href="javascript:toggleDiv('defaultTab-28')" 

现在我想在“defaultTab-28”div上使用切换功能,比如

function toggleDiv(divId){
     $("#" + divId).toggle();
}

如果我使用 .delegate() 或 .on() 我将不得不指定事件,比如点击等,但在这种情况下,事件触发不是必需的。

编辑:更准确地说:

我知道在使用 JQuery 时使用内联 JS 不好,我可以使用 JQuery 中的按钮单击功能,但我的问题是:有没有像 .on 或 .delegate 这样的函数来分配没有事件的函数

  1. 我已向现有页面添加了一个 div
  2. 当任何人点击标签时,我希望将 div 传递给 javascript 函数,这里是我的 div 以使用 jquery 切换,但由于此 div 稍后添加,它无法绑定到切换功能

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    您的代码已按原样运行,您无需对尚不存在的 div 执行任何操作。

    http://jsfiddle.net/97GZb/

    function toggleDiv(id){
        $("#" + id).toggle();
    }
    
    setTimeout(function(){
        $("body").append("<div id='defaultTab-28'>I'm the div!!!</div>");
    },5000);
    

    使用这个 html:

    <a href="javascript:toggleDiv('defaultTab-28')">Click me to toggle the div that will be appended in 5 seconds.</a> ​
    

    并回答您的评论:

    我知道在使用 JQuery 时使用内联 JS 不好,我可以使用 JQuery 中的按钮单击功能,但我的问题是:有没有像 .on 或 .delegate 这样的函数来分配没有事件的函数

    不,必须有某种事件来告诉 javascript 引擎何时运行代码。添加到页面的元素是一个事件,它被称为突变事件。还有 Mutation Observers 也可以处理这个问题,它们旨在替代 Mutation Events。两者都没有很好的跨浏览器支持。

    【讨论】:

    • 他不想要切换 onClick 吗?
    • @HristoYankov 我不知道,你告诉我。这就是我解释他的问题的方式,以及根据你对他的问题所做的评论,你似乎是如何解释它的。
    • @HristoYankov,OP 声明,“...但在这种情况下,事件触发器不是必需的”
    • 我认为您的代码很好 +1。但是,我相信 OP 错误地认为当他“切换”时,他是在“追加”。
    【解决方案2】:

    JavaScript

    function toggleDiv(divObj){
         $(divObj).toggle();
    }
    

    HTML(稍后将附加的内容):

    <div onClick='toggleDiv(this);'></div>
    

    【讨论】:

    • 使用 jQuery 的页面上的内联 JS?马虎。
    • 哦,请原谅我提供了一个解决方案,而其他人在 cmets 中误解了他的问题。
    • @HristoYankov 您对他关于他正在寻找什么的问题的评论与您的​​回答建议的解决方法不符。
    • 没有人理解这个问题,因此多个 cmets 要求 OP 修复它!
    • @yesIcan 不。必须有一个事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多