0

我正在使用一个使用 jquery 创建手风琴的插件。但是,我的 jquery 函数在 dom 被操作之前运行,并且我在函数中定位的 div id 已经创建。这是我的功能。

jQuery('#_Offer_Something').click(function(){

      if( !confirm('Delete?') ) { //show confirm dialog
            return false; //do nothing if cancel is clicked (prevent the browser from following clicked link)
      }else{
           window.location.replace("http://stackoverflow.com"); 
    }
});

所以基本上这不起作用,因为 div 还不存在。

4

4 回答 4

4

编辑

在您的具体情况下,您可以使用:.on()

(function($){  // remap the '$' symbol to jQuery

   $(document).on('click', '#_Offer_Something',function(){
   // ^^^^ or 'body' or a parent element
       if( !confirm('Delete?') ) { //show confirm dialog
            return false; //do nothing if cancel is clicked (prevent the browser from following clicked link)
       }else{
            window.location.replace("http://stackoverflow.com"); 
       }
   });

})(jQuery);

以上将作为现已弃用的 jQuery.live()方法。
确保将 jQuery<script>标签放在标签之前</body>

于 2012-04-20T19:07:09.420 回答
2

如果您的 DOM 对象是在页面加载后的某个时间动态创建的,那么您将需要使用委托事件处理以便从中获取事件,即使您的事件处理程序安装在相关对象之前也是如此。您可以使用 jQuery 1.7+ 的动态形式来做到这一点.on()

jQuery(document).on('click', '#_Offer_Something', function(){

      if( !confirm('Delete?') ) { //show confirm dialog
            return false; //do nothing if cancel is clicked (prevent the browser from following clicked link)
      }else{
           window.location.replace("http://stackoverflow.com"); 
    }
});

从技术上讲,它的工作方式是所有点击事件都在祖先链上冒泡(除非沿途的某些对象停止冒泡过程)。在这种情况下,我们在对象上安装了一个点击处理程序document,它会监视源自与选择器匹配的对象的点击事件#_Offer_Something

For best performance, you wouldn't actually bind this event handler to the document object. Instead, you would pick a static parent object (some parent of #_Offer_Something) that does exist at the time you install the event handler. I picked the document object here only because you didn't disclose the rest of your HTML so I don't know what a better choice would be.

于 2012-04-20T19:10:11.247 回答
1

on仅在插入元素后使用 jQuery绑定或绑定元素。有关示例,请参阅http://api.jquery.com/on/。快速示例:

$(document).on('click', '#_Offer_Something', function(){});
于 2012-04-20T19:07:27.447 回答
0
$(document).ready(function(){
  ... code here ...
});

或者

$(function(){
  ... Code here ...
});
于 2012-04-20T19:05:19.930 回答