Hi Brandon, Let me try this ....
I'm not seeing it work. Here is my test code. I tried all 3 methods: <html> <head> <script type='text/javascript' src='/public/js/jquery-1.2.1.js'></ script> <script> //<!-- function testFilter() { var s = ""; s += "<script>$('body').append('<button>foobar1</button>');</ script>"; s += "<hr style='background: yellow; height: 10px;'/>"; s += "<img src='http://www.santronics.com/images/ WINSbox-120x120.gif'/>"; s += "<div style='border: 2px solid silver;'>"; s += "Hi there!"; s += "<img src='http://www.santronics.com/images/ WINSbox-120x120.gif'/>"; s += "<hr style='background: green; height: 10px;'/>"; s += "<script>$('body').append('<button>foobar2</button>');</ script>"; s += "</div>"; s += "<img src='http://www.santronics.com/images/ WINSbox-120x120.gif'/>"; s += "<hr style='background: cyan; height: 10px;'/>"; s += "<script>$('body').append('<button>foobar3</button>');</ script>"; //s = $(s).not('script, hr, img'); //s = $('*',s).andSelf().not('script, hr, img'); s = $('*',s).add(s).not('script, hr, img'); $("#wcResult").html(s); } //--> </script> </head> <body> <button onclick="testFilter();">test filter</button> <div id="wcResult" style="padding: 10px; border: 1px solid black;"> </div> </body> </html> With all methods, the top and bottom elements are filtered, but the elements within the <div> remain. What am I missing? BTW, for this real case scenario, my workaround is to use .text(), but I will need to give people the option to some minimum secured html. -- HLS On Sep 22, 1:39 pm, "Brandon Aaron" <[EMAIL PROTECTED]> wrote: > The .not and .filter methods only run against the matched elements within > the jQuery collection. In order to filter all elements you will need to add > all elements to the collection. I think something like this should work > (untested). > > $('*', data).andSelf().not('style, meta, link, script, title, img'); > > andSelf is a jQuery 1.2 method. If you are using an earlier version you > could use $('*', data).add(data) > > -- > Brandon Aaron > > On 9/22/07, Pops <[EMAIL PROTECTED]> wrote: > > > > > I noticed some example using something like so: > > > data = $(data).not("style, meta, link, script, title"); > > > to filter out thes tags. > > > I tried using this to filter img as well: > > > data = $(data).not("style, meta, link, script, title, img"); > > > and what I noticed is that this doesn't work if the elements are > > within other elements. > > > For example, I have this simple example: > > > <img src="1"> > > <div> > > <img src="2"> > > </div> > > <img src="3"> > > > In this case, only img 1 and 3 will be filtered out. img 2 will > > remain. > > > I am wondering if that is proper behavior for .not(elements)? > > > My goal is to filter all elements regardless of node or branch > > depth. > > > Thanks > > > -- > > HLS