Javascript变量作为数组工作
Javascript variable is working as array
我已经动态创建了jquery选项卡。我想重命名选项卡。当我点击选中的选项卡时,模糊显示一个文本框,它将文本框的值设置为该选项卡。当我再次尝试为另一个选项卡执行此操作时,它将重命名当前和以前的选项卡。等等…
JS Fiddle上的实时演示
$(document).ready(function() {
$("#tabs").tabs({
tabTemplate: "<li><a href='#{href}'>#{label}</a> <p title='close' id='removeTab' style='cursor:pointer;display:inline'>x</p></li>"
});
});
$(function() {
for (i=0; i<3; i++){
var title = '<span id="a'+i+'">Tab..... ' + i;
var url = '#fragment-' + i;
addTab(url, title, i);
}
var index =10;
index++;
$("#addTab").live('click', function() {
index++;
var title = '<span id="a'+index+'">Tab..... ' + index;
var url = '#fragment-' + index;
addTab(url, title, index);
});
function addTab(url, title, index) {
$('#tabs').tabs("add", url, title, [index]);
$('#a'+index).click(function(){
var _current = '#a'+index
if($(_current ).parent().parent().hasClass('ui-tabs-selected')){
$(_current).hide();
$('#editTabName').stop(false, true).hide();
var nameField = '#editTabName';
$(nameField).css({
top: '12px',
left: $(this).parent().offset().left + 8+'px',
zIndex:100,
position:'absolute'
});
$(nameField).val($(_current).html());
$(nameField).show(50);
$(nameField).focus();
$(nameField).blur(function (){
alert(_current);
newName = $(nameField).val();
$(_current).html(newName);
$(nameField).hide();
$(_current).show();
});
}
});
}
$('#removeTab').live('click', function() {
var $tabs = $('#tabs').tabs();
var selected = $tabs.tabs('option', 'selected');
if(selected == -1)
selected = $('p[id=removeTab]').index(this);
$('#tabs').tabs("remove", [selected]);
});
});
每次重命名时都要设置绑定事件。$(nameField).blur(function (){})
实际上不会覆盖您以前的模糊,它只会附加函数。因此,在添加新函数之前,您需要解除绑定。$(nameField).unbind('blur');
所以功能将是
function addTab(url, title, index) {
$('#tabs').tabs("add", url, title, [index]);
$('#a'+index).click(function(){
var _current = '#a'+index;
if($(_current ).parent().parent().hasClass('ui-tabs-selected')){
$(_current).hide();
$('#editTabName').stop(false, true).hide();
var nameField = '#editTabName';
$(nameField).css({
top: '12px',
left: $(this).parent().offset().left + 8+'px',
zIndex:100,
position:'absolute'
});
$(nameField).val($(_current).html());
$(nameField).show(50);
$(nameField).focus();
$(nameField).unbind('blur');
$(nameField).blur(function (){
alert(_current);
newName = $(nameField).val();
$(_current).html(newName);
$(nameField).hide();
$(_current).show();
});
}
});
}
使用一个而不是模糊。
$(nameField).blur(function ()
变为:
$(nameField).one('blur', function (){
http://jsfiddle.net/k44Wk/18/
相关文章:
- Var工作,但在使用数组执行相同操作时停止
- 2D数组在Angular JS 1.2.x中工作,而不是在1.3.x中工作
- 为什么AngularJS$scope.watch()在我告诉它监视数组时会停止工作
- 如何制作Javascript's减少对数组数组的方法工作
- 试着让数组工作
- 如何让Knockout可观察数组与jQuery对话框一起工作
- 当许多元素相等时,Javascript数组排序无法正常工作
- AngularStrap Select和ng选项don'使用动态数组不能很好地工作
- 从数组中随机选择,但在for循环中选择是不可能的;没有按预期工作
- map() 函数如何在数组上工作
- Javascript数组未按预期工作
- 如何在谷歌工作表中使用数组公式时使用getLastRow.我可以让它忽略一列吗
- Web工作程序在处理大型数组时内存不足
- Polymer v1.3.1数据绑定无论是否使用带有重复模板和json数组的iron ajax都无法工作
- Knockout.js多个可观察数组不工作
- 解析数组时 for 循环无法正常工作
- ngRepeat:dupes 使用名为“name”的数组在中继器中复制键.用其他名称,它是工作
- 谷歌地图API v3动态标记,帮助使数组工作
- js 数组排序无法正常工作
- JavaScript发送变量,但插入数组PHP不能正常工作