Search and Top Navigation
#3171 closed enhancement (fixed)
Opened August 09, 2008 04:45AM UTC
Closed July 16, 2010 05:10PM UTC
Last modified November 19, 2010 06:26PM UTC
have option to remove tab by href content, not just by index
Reported by: | tiago.freire@gmail.com | Owned by: | klaus.hartl |
---|---|---|---|
Priority: | minor | Milestone: | 1.8.3 |
Component: | ui.tabs | Version: | 1.6rc6 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
My system generates tabs on runtime, with UUIDs as the ID attribute to ensure uniqueness. This way the menu has an href=#<uuid>, and the div has id=#<uuid>. Tracking the index of each content is tiresome, and deletion requires re-scanning the menu and updating the indexes so that I can delete the content correctly. It would be better (for me at least) if I also could use the code:
$(#menu).tabs("remove",'#<uuid>');
and not care about the indexes (which are useful in other circumstances).
Attachments (1)
Change History (15)
Changed August 09, 2008 05:33AM UTC by comment:1
Changed August 17, 2008 10:17AM UTC by comment:2
component: | ui.core → ui.tabs |
---|---|
milestone: | → TDB |
owner: | paul → klaus.hartl |
priority: | major → minor |
Changed February 20, 2009 05:41PM UTC by comment:3
Hi, klaus.hartl!
I want to give you heads-up on this bug. It's a no-brainer, and will add a good functionality to jQuery tabs.
as of jQuery 1.6rc6, function remove begins like this:
/ when generated by themeroller, the remove() function is in line 5681
/...
remove: function(index) {
var o = this.options, $li = this.$lis.eq(index).remove(),
$panel = this.$panels.eq(index).remove();
/...
you just have to change it to:
/...
remove: function(index) {
if (typeof index == 'string')
index = this.$tabs.index( this.$tabs.filter('[href$=' + index + ']')[0] );
var o = this.options, $li = this.$lis.eq(index).remove(),
$panel = this.$panels.eq(index).remove();
///...
And fix with this bug/enhancement.
This enables the possibility of removing a tab using the tab's href property without losing the ability to remove according to the tab index.
Please add this feature! I need this and can patch jQuery tabs every new version, but I bet it will be a nice feature for others too.
best regards
Changed February 20, 2009 08:47PM UTC by comment:4
I'm considering to add that functionality, but: if so, I'd like to add that consistently to all methods where it applies.
Changed February 22, 2009 12:03PM UTC by comment:5
milestone: | TBD → 1.7 |
---|---|
version: | 1.5.2 → 1.6rc6 |
Changed March 08, 2009 02:29PM UTC by comment:6
milestone: | 1.7 → 1.8 |
---|
Changed April 30, 2009 12:36PM UTC by comment:7
With this patch I think tabs is more coherent.
Changed February 05, 2010 01:14PM UTC by comment:8
Just to give the heads up, since the last post is 9 months old. Will this be implemented in 1.8? Pretty please? I haven't found any mention of it being implemented on the changelogs up to 1.8rc1.
Changed June 18, 2010 12:12AM UTC by comment:9
patch updated with latest version of jquery-ui. Available here http://github.com/francois2metz/jquery-ui/commit/d00db9f0ccd81c0ec6458cabab08f66866b26ea0
Changed July 01, 2010 02:30PM UTC by comment:10
Respectfully, this seems like a "no brainer" feature enhancement... and it's so trivial to add, how come it's taking so long to get this the code base? The tab component will be MUCH easier to use if this fix is in place for all applicable verbs.
Changed July 12, 2010 09:42PM UTC by comment:11
placed my version of a patch on github. I tried to make it as small as possible, without sacrificing readability and maintainability, and change as little as possible. Hope you find this code acceptable: http://github.com/BrazilianJoe/jquery-ui/blob/56a65a2571c81bd94ae8925b85f0e5621b51a1cb/ui/jquery.ui.tabs.js
Changed July 13, 2010 12:01PM UTC by comment:12
Further comments on my proposed changes to jquery.ui.tabs.js:
I have created a small helper function for internal use only. It is called _getIndex(). It receives the index variable, and parses it. if it is a string, it assumes it contains a href and looks for a tab with this href in the <a> link at the tab top. If it finds no tab, it returns NaN.
Next, it checks if it is a number, and similarly sanitizes it to a valid number.
It always returns a typeof number , thus required very little change on the other functions which can benefit from this behaviour.
I have used _getIndex to implement href functionality to the methods enable, disable, select, remove and load.
Changed July 16, 2010 05:10PM UTC by comment:13
resolution: | → fixed |
---|---|
status: | new → closed |
Fixed in fde8c64.
Changed August 04, 2010 01:25AM UTC by comment:14
milestone: | 1.9 → 1.8.3 |
---|
Changed November 19, 2010 06:26PM UTC by comment:15
Tabs: Added ability to reference tabs by href. Fixes #3171 - have option to remove tab by href content, not just by index.
Changeset: fde8c64fd37d6700e174ccf5ea1574e418db2c1e
I noticed that I can use the select function to select a tab by the href. I digged the tabs code and copied 2 lines of the tabs select function to the remove function, and the enhancement request I made came true.
I just copied those 2 lines from the tabs(select) action to tabs(remove), this way I can delete by the href as wel as the index. Should be trivial to add those 2 lines to the next release.
if (typeof index == 'string')
index = this.$tabs.index( this.$tabs.filter('[href$=' + index + ']')[0] );