2010-10-05 23 views
8

Có điều gì đó sẽ kích hoạt, phải không? tôi nhận được không được hỗ trợ trong IE8 và không có gì xảy ra trong Fx 3.6.10Thực hiện công việc onpropertychange và domattrmodified để phát hiện khi các thành phần được thay đổi

<html> 
<head> 
<script src="http://code.jquery.com/jquery-1.4.2.js"></script> 
<script> 


// modified from http://pragmatec.blogspot.com/2009/06/google-toolbar-style-and-tooltip.html 
jQuery(function($){ 
    $.fn.dommodhandler = function(options){ 
    function setListeners(){ 
     if (typeof (this.onpropertychange) == "object"){ 
     $('#innerDiv').bind('propertychange',function(e){ 
      $('#msgDiv').html(this.id+' changed</br/>'); 
     }); 
     } 
     else if ($.browser.mozilla){ 
     $('#msgDiv').html("bind"); 
     $('#innerDiv').bind('DOMAttrModified',function(e){ 
      $('#msgDiv').html(this.id+' changed</br/>'); 
     }); 
     } 
     else { 
     $('#msgDiv').html('not supported in this browser'); 
     return false; 
     } 
    } 
    return setListeners(); 
    } 
    } 
); 
$(document).ready(function(){ 
    $.fn.dommodhandler(); 
}); 

</script> 
</head> 
<body> 
<div id="wrapper"> 
<a href="#" onClick="document.getElementById('innerDiv').height='300px';document.getElementById('innerDiv').innerHTML=new Date(); return false">Click</a> 
    <div id="outerDiv"> 
    <div id="innerDiv">Hello</div> 
    </div> 
    <div id="msgDiv"></div>  
</div> 

</body> 
</html> 

UPDATE: Vẫn không hạnh phúc ... Bất cứ ai có bất cứ đề nghị để phát hiện khi một cái gì đó (ajax) thay đổi chiều cao thực tế của một div do lớn hơn hoặc nhỏ hơn nội dung

+0

tôi muốn thay đổi 'nếu (typeof (this.onpropertychange) == "đối tượng") 'to' if ("onpropertychange" trong này) '. Trong trường hợp phần tử có một trình xử lý 'onpropertychange' hiện có,' typeof' có thể trả về hàm '" ''. – gilly3

+0

Cảm ơn nhận xét. – mplungjan

Trả lời

2

Nếu bạn thực sự thay đổi một thuộc tính, sự kiện cháy (FF 3.6.10): http://jsfiddle.net/Nw4rA/

+0

Thú vị - điều đó không kích hoạt khi tôi thay đổi chiều cao - vì vậy bạn có gợi ý về cách tôi có thể kích hoạt tập lệnh khi nội dung thay đổi kích thước của div kể từ khi kích hoạt lại không được kích hoạt trong các trình duyệt không phải là IE – mplungjan

+0

Thật khó, afaik. Bạn có đủ điều kiện để nghe sự kiện thay đổi kích thước của cửa sổ không? $ (cửa sổ) .bind ('resize', function (event) {...})? Nếu không, bạn có thể phải làm việc với các sự kiện tùy chỉnh mà bạn kích hoạt bất cứ khi nào bạn thay đổi kích thước của div. – Thomas

+0

Đó là những gì tôi nghĩ tôi đã làm ở trên. Và nó được kích hoạt khi kích thước của div bị thay đổi, không phải khi tôi thay đổi kích thước của div. Đó chỉ là một bản demo – mplungjan

Các vấn đề liên quan