我想知道当div更改其高度或任何CSS属性时如何触发事件。
我有一个id =的div mainContent。我希望jQuery在更改其高度时自动触发事件。我做了这样的事情:
mainContent
$("#mainContent").change('height', function() { $("#separator").css('height', $("#mainContent").height()); });
我知道错了。
这是我的整个代码(我粘贴了所有代码,因为由于某种未知原因我无法进入jsfiddle):
<html> <head> <style type="text/css"> html, body { width: 100%; height: 100%; margin: 0; padding: 0; } #separator { border-right: 1px solid black; } </style> <script type="text/javascript" src="jquery1.6.4min.js"> </script> <script type="text/javascript"> $(document).ready(function() { $("#separator").css('height', $("body").height()); }); $(function() { $("#btnSample1").click(function() { $("#mainContent").css('height', '400px'); $("#mainContent").css('width', '600px'); $("#mainContent").css('background-color', '#F0F0F0'); }); $("#btnSample2").click(function() { $("#mainContent").css('height', '1600px'); $("#mainContent").css('width', '700px'); $("#mainContent").css('background-color', '#F0F0F0'); }); $("#mainContent").change('height', function() { $("#separator").css('height', $("#mainContent").height()); }); }); </script> </head> <body> <table style="width: 100%;"> <tr> <td valign="top" style="width: 19%;"> <table id="mainMenu"> <tr><td><input id="btnSample1" type="button" value="Sample 1" /></td></tr> <tr><td><input id="btnSample2" type="button" value="Sample 2" /></td></tr> </table> </td> <td valign="top" style="width: 1%;" > <div id="separator"></div> </td> <td valign="top" style="width: 80%;"> <div id="mainContent"></div> </td> </tr> </table> </body> </html>
我试图separator根据mainContent高度的mainContent变化来调整div id = 的高度。
separator
PS:在这种情况下,我知道我可以使用button事件来执行此操作,但是我希望div在更改高度时触发该事件。请帮忙。提前致谢。
首先,没有开箱即用的css-changes事件,但是您可以自己创建一个,仅onchange用于:input元素。不适用于CSS更改。
onchange
:input
有两种跟踪CSS更改的方法。
DOMAttrModified
第一种方式:
var $element = $("#elementId"); var lastHeight = $("#elementId").css('height'); function checkForChanges() { if ($element.css('height') != lastHeight) { alert('xxx'); lastHeight = $element.css('height'); } setTimeout(checkForChanges, 500); }
第二种方式:
$('#mainContent').bind('heightChange', function(){ alert('xxx'); }); $("#btnSample1").click(function() { $("#mainContent").css('height', '400px'); $("#mainContent").trigger('heightChange'); //<==== ... });
如果您控制css的更改,第二个选择是更优雅,更有效的方法。
资料:
Description: Attach a handler to an event for the elements.
Description: Execute all handlers and behaviors attached to the matched elements for the given event type.