addDefault
After talking w/ Yehuda, we came up with the idea of allowing people to provide default actions on triggered events. I discuss it a little on JMVC's forum. http://groups.google.com/group/javascriptmvc/browse_thread/thread/4d5ae9c61f3817f0 But here's what it looks like essentially: //imagine some plugin wanting to provide default functionality on a "hide" event. $(".tab").bind("hide", function(ev){ var el = this; ev.addDefault(function(){ $(el).hide()
Improvement to $.isPlainObject
The current isPlainObject in 1.4 tests .nodeType because IE makes dom nodes look like objects. This has the side effect that $.isPlainObject({ nodeType: ... }); will return false when it should return true. I did a little testing of properties on nodes in IE. I started by testing various things on node.childNodes coming across window.NodeList. However because node.childNodes.constructor === window.NodeList will not work across iframes I looked for an alternate toString based way to detect ie dom
Further Decoupling Sizzle and jQuery
Would it be possible to have a build option that would build sizzle.js and jquery.js as separate, independent files? I would like to have a version of jQuery that depends on, but does not embed, the stock sizzle.js. This is currently not possible because jQuery modifies the embedded sizzle.js in order to tack some utility methods onto the jQuery namespace. Currently I have to update both jQuery and Sizzle in order to have a jquery.js that the depends on Sizzle: I update Sizzle's EXPOSE from: // EXPOSE
Fix AJAX methods for autoloading XML under IE6/7 (local filesystem, or content-types ending in +xml)
In jQuery 1.4.1, line 5185: var ct = xhr.getResponseHeader("content-type") || "", xml = type === "xml" || !type && ct.indexOf("xml") >= 0, data = xml ? xhr.responseXML : xhr.responseText; if ( xml && data.documentElement.nodeName === "parsererror" ) { jQuery.error( "parsererror" ); } Under IE7, when running an HTML document locally, and retrieveing an XML resource in the same folder with XMLHttpRequest, the XML is not automatically parsed,
Yet another change event bug on IE
test case: http://gist.github.com/301350 (jsbin is somehow broken with my test case on IE :( ) Try changing the select option once, then blur it by clicking anywhere else on the document, you will see the change event is fired twice. On other browsers it is fired once only.
$.inObject
I think it would be convenient to have a method for testing whether or not a value exists in an object (of course you can use the long-hand version of this, but this seems more intuitive, especially when an inArray function exists): $.inObject = function(object, value) { return (typeof object[value] === 'undefined' ? false : true); };
IE change event not firing on text input after setting value - possible regression
Here's the link to the bug I filed: http://dev.jquery.com/ticket/5892 And a link to a test page: http://dl.dropbox.com/u/11686/test.html A better description and STR are on the linked test page. This behavior is only occurring in IE 6-8 with jQuery 1.4.0. Previous versions of jQuery and/or other browsers seem to work as expected for me. Can anyone duplicate this one? Thanks, Aaron
html() stripping <style> in IE sometimes
In the following test case, a textarea contains an html snippet/template that we'll try to insert into a div directly above the textarea. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.js" ></script> <script type="text/javascript"> $(document).ready(function(){
Bug loading html with script in jquery 1.4
Hello, I found a problem when loading a section of a page using $.load/$.ajax. I have a page that loads some html content and a script tag. The html is loaded successfully, but the script is not processed after about the 3rd attempt. The section I want to load has less than 512B. If the section is larger than that then the scripts are processed successfully. This problem in only in jquery 1.4. If I try exactly the same thing using jquery 1.3.2 than the scripts work every time. Regards, Cosmin Harangus
My translation plugin is fighting jQuery for an undocumented $.getText
It seems that 1.4 exposed a new $.getText utility function, which breaks my translation plugin. Or rather: My translations plugin - which uses $.getText - breaks $.text because it overwrites an undocumented $.getText function, which $.text depends on. Some questions: 1. Why is this function not documented? 2. Why doesn't jQuery refer internally to getText function rather than jQuery.getText? Is this to save on the closure? 3. Why is this function not consistently named like other jQuery utlity functions?
proposed fix for #6050
http://dev.jquery.com/ticket/6050 line 46 in attributes.js: from: elem.className += " " + classNames[c]; to: elem.className += (elem.className === "" ? "" : " ") + classNames[c]; Leon
JSON Performance comparison of eval and new Function
Hello, Why new Function is used in the code below instead of eval? According to this blog post eval is generally faster. http://weblogs.asp.net/yuanjian/archive/2009/03/22/json-performance-comparison-of-eval-new-function-and-json.aspx // Try to use the native JSON parser first return window.JSON && window.JSON.parse ? window.JSON.parse( data ) : (new Function("return " + data))()
Problem when I filter and after that I call a live()
I recreated the problem here http://jsbin.com/azano I'm using jQuery 1.4.1.
isEmptyObject()
I shall be so bold, to suggest slightly improved isEmptyObject() ... /* currently in jQuery isEmptyObject : function(obj) { for (var name in obj) { return false; } return true; } , */ /* return undefined on any object that is not "object" or "function" also ignore the possible prototype chain */ // slightly improved isEmptyObject : function (object) { if (typeof object !== 'object' && typeof object !== 'function') return ;
QUnit::same infinite loop
I'm wondering about a case where I am experiencing infinite recursion... i think. var top = {owner:null, children:[]}; var a = {owner:top, children:[]}; var b = {owner:top, children:[]}; var c = {owner:top, children:[]}; top.children.push(a); top.children.push(b); a.children.push(c); b.children.push(c); same(a, b, 'will this ever return?'); Thanks for any insight here. Thatcher
.live("hover") no longer works in 1.4.2pre? (does work in 1.4.1)
...wonder if this has to do with the recent internal reworking of the event system, but the following code no longer works for me in the nightly, while it does work in v1.4.1 $(".btn_item_del").live("hover", function() { $(this).closest("tr").toggleClass("del_q"); }); just to clarify, it doesnt fire at all. regression maybe? thanks, Leon
API.jquery.com Feedback
As a front-end designer for complex web-apps and freelance usability consultant, I want to offer some feedback on the NEW jQuery API section: --------------------------------------------------------- 1. Bookmarking / Browser Favorites When using Ajax to populate pages, it is recommended to use an URL hash-syntax to allow pages to be 'bookmarked'. This allows direct-link to a topic to be copied and pasted into a discussion. Since I provide support to jQuery users, I am constantly providing links like
jQuery future modularity?
Ahoy all. I heard something somewhere about a future version of jQuery becoming more modular. How exactly will that work? I would imagine that individual modules would be broken up into very focused areas of functionality. Basic DOM manipulation, CSS, AJAX, DOM Events, Custom Events, etc… Sizzle is an awesome step towards modularity. Would you then be able to make your own custom jQuery build similar to how MooTools builder works? i.e. http://mootools.net/core Over in the MooTools universe we have
fade effects and html5 elements
I'm probably going to look into it later, but while using jQuery today on a html5 <section> node which I had applied position: absolute; to fadeIn/fadeOut was acting really screwy on it. fadeOut didn't seam to work, and fadeIn did something weird with opacity on things that were already displayed. For a test I think you should be able to reproduce the issue by putting a <section> in the page and giving it a position: absolute; style and trying to use fadeIn/Out on it. I found this issue in both Firefox
raw API dump invalid XML
As far as I can tell, the raw XML API dump (http://api.jquery.com/api/) is not being served properly. That URL returns index.html with content type not set to {text,application}/xml. Also, the document is missing an XML declaration at the top (not sure whether that's a problem though). This means I can't retrieve and parse it via $.ajax - the following raises a parsererror: jQuery.ajax({ type: "GET", url: "http://api.jquery.com/api/", dataType: "xml", success: function(data, status,
Does buildFragment cacheable behavior prevent execution of scripts?
Using jQuery 1.4.1. I'm responding to an ajax get request with some html that includes a script tag. I found that the contents of the script tag is not evaluated after the first time it is requested. I've dug into this a bit and was hoping that someone could confirm the issue: (1) It seems that the fragments built by "buildFragment" are ALWAYS cached (well, under the conditions on line no. 4202). Changing the 'cache' option to false on the $.ajax request does not affect this. Is this correct,
jQuery 1.4.1: .empty() and .html() efficiency issues
I ran into an issue with .empty() (and eventually .html("")) while attempting to build a filterable table. The root of the problem stemmed from the fact that this is a fairly robust table with numerous child objects per row. When running .empty() on the tbody, I found that the .remove() and .removeData() functions were being called 8500+ times during the course of 1 .empty() call. This ends up accounting for roughly 87% of the processing in my situation and jumps the processing time from 180ms to
Issue with replaceWith...
Hi, I recently ran into an issue with the replaceWith function. This function currently does this.after( value ).remove(); when it tries to insert the value after the current node there are duplicate elements in the DOM (note the old element hasnt been removed yet). If my new content has any inline script elements that are trying to manipulate the content, then it manipulates the old content in the DOM and not the new content since the old content precedes the new content in the DOM. I would like
User Script to Link Github and Trac by issue numbers.
Hi all, I've made a simple user script to easy navigation between jquery on github and jquery's trac. It simply looks for issue numbers like #0000 and adds a link to dev.jquery on the same ticket. The script is here: http://github.com/irae/irae.user.jss/blob/master/jquery-dev-github-trac.user.js?open.html To install: - Firefox - Have Greasemonkey extension installed and click the "raw" link. - Google Chrome - just click on the "raw" link Hope you'll find it usefull.
jQuery 1.4.1 - doesn't run .after() & .before() method in Safari 3.0.4 MAC
$( '#autchre > dt' ).after( '<a href="http://">日本語</a>' ); $( 'body' ).prepend( 'get ready.' ); When html document doesn't have #autechre element, Normaly skip .after() method on line 1 and run next line. But parameter has JP-language(UTF-8:3byte) with wrapped any tags, Safari 3.0.4 MAC occured error(might be not error) and stop run rest of the codes. It runs uneventfully with jQuery 1.3.2. I guess it's a bug of jQuery 1.4.1. I'm just a beginner of jQuery and English. Sorry for my poor English. Thanks,
jQuery.event.special['type'].add modifies handler of other types
I am not able to find the thread in the new forum so I am opening a new one. old thread: http://groups.google.com/group/jquery-dev/browse_thread/thread/a42f9b06cd6af10a/1af5e4e54238a11a The release note of jQuery 1.4.1 mentions that this bug is fixed (http://dev.jquery.com/ticket/5779), but from my testing it is not. Here is the new test case: http://jsbin.com/ofiyo
jquery-1.4: append() escapes htmlentities
While changing an application form jquery-1.3.2 to 1.4 I discovered a problem with append. When I use $("#FOUNDIT").append("⇧ Here you are.")to append the text to an existing div-container, then jquery insert "&#x21E7; Here you are." with jquey-1.4. While using 1.3.2 the entity is inserted "as is" and on the page the arrow appears. But when I put a <span></span> around the text, it isn't escaped. Is this a bug or a feature? Greetings, Rene
ScriptCommunicator for $.ajax script/jsonp loading
Amix from Plurk has developed a cross-browser solution to detecting ajax script load failures. http://amix.dk/blog/post/19489 See the code here: http://github.com/amix/ScriptCommunicator/blob/master/script_communicator.js This would be a useful addition to the jQuery core. Can this be added?
jquery ajax async vs html5 script async
Firefox is now supporting the html5 proposed async attribute on scripts, which allows them to execute in a non-blocking fashion. The syntax is <script async=""> ... </script> (Note, not async="true", although async="async" is valid.) Here's how google analytics recommend using their tracking code asynchronously: var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
jQuery.live / jQuery.fn.live Discussion
Update (02/01): Given the amount of attention that this post has received, it is probably beneficial to provide some sort of a general synopsis before I mark it as answered. This is definitely a polarizing topic, and the discussion really took on a life of its own. The developers have all been very responsive to this issue, and have listened to the feedback posted here and in various other locations. I don't want to extend any promises that haven't been made by the core devs, so I won't expand
IE bug : Using Shadow filter adds extra size to elements, so does height(), width()...
I already created an issue about this, but since there are new facts there, I thought creating a forum entry could bring attention on this again. Sorry if that's a bit overwhelming... So see http://dev.jquery.com/ticket/6014 for new developments.
$.contains in jQuery v1.4 is not consistent in all browsers
In jQuery 1.4 $.contains doesn't return boolean in all browsers - e.g. check the following in IE8 and Firefox: alert($.contains(document.documentElement, document.body)); I noticed you are using "compareDocumentPosition" in browsers that support it, however, it currently returns 16 or 0 in these browsers instead of the desired true/false. Replacing the following line: return a.compareDocumentPosition(b) & 16; with the following: return !!(a.compareDocumentPosition(b) & 16); in "sizzle.js" fixes the
Should handle be removing the namespace?
I'm trying to get namespaces to work with live. I'm at a roadblock b/c handle removes the namespace. This namespace is needed to be able to trigger namespaced events. Is this done on purpose? If so, for what reason? My guess is so if you trigger("click.foo"), you get a "click" event. However, this won't work for liveHandler which needs "click.foo". Thoughts on this problem?
Problem with 'special' event implementations in 1.4
I posted a bug recently at http://dev.jquery.com/ticket/5967, and after a bit of investigation this seems to be a more generic problem with the way that the 'change' and 'submit' special (ie browser unsupported) bubbling behaviour is implemented. If the special events are being used (eg in IE), and more than one event is bound to a given object, then unbinding any one of these events will unbind all of them. This seems to be fixable by renaming the 'remove' function in jQuery.event.special.change/submit
jQuery-1.4.1 - $('input').live('change', ...) in IE8, IE7
IE seems to skip the first change event in the following case (also at http://jsfiddle.net/d8jjj/11/). Note that the event seems to fire every time *after* the first one, just not the first time. <!doctype html> <html> <body> <input type='text'> <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js'> </script> <script> jQuery(function($){ $('input').live('change', function(){
bug in .load()
In the documentation says: $('.result').load('ajax/test.html #container'); When this method executes, the content of ajax/test.html is loaded, but then jQuery parses this returned document to find the element with an ID of container. The inner content of this element is inserted into the element with a class of result, and the rest of the loaded document is discarded. But this is not true, as of v1.4.1, load takes the target selector content INCLUDING the container itself, not just the inner content
Revert to old $.fn.add() behaviour, but provide a $.fn.sort()
The backwards incompatible change to $.fn.add() in jQuery 1.4 is bugging me. First of all, it's breaking some old code, and second of all it bugs me because I don't get *why* it was changed to return a source-order sorted collection. Consider this bit of code: var newElm = elm.prevAll().add( elm.parent() ).eq(0); In 1.3.2 and earlier `newElm == elm.prev()`, whereas as of version 1.4 `newElm == elm.parent()`. Questions: Could someone help me understand why this change to `.add()` was a) beneficial
jQuery.ajaxError()
jQuery.ajaxError() is not working on v. 1.4. See comments on: http://api.jquery.com/ajaxError/
Empty Sets Being Acted Upon
Sincere apologies if this has been addressed elsewhere, I did try searching. I've noticed a change in behaviour between 1.3.2 and 1.4.1 and I'm wondering if it's intentional, or something wrong with my code. I've noted this on two completely separate systems. $("#myDiv").myFunctionName(); In 1.3.2 the above code would only execute if $("#myDiv") actually returned a DOM set containing elements. If there was nothing matched, nothing got executed. It seems that in 1.4.x however, myFunctionName() is
Ideas of metadata
jquery.metadata.js I downloaded jquery-ui-1.8rc1 pack and found a jquery.metadata.js plugin in external directory, it seems to had been used for widgets pre-configuration since 2006... but just exposed as a stand-alone plugin in the recent version. Because I have used a very simular jquery.meta.js for a long time, and I think this feature is totally OK to be included in jquery core, I open this idea topic to look for a discussion: meta & meta in html In my opinion, a meta of something is a data that
Next Page