Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这是在单击按钮时将表行更改为表单的最佳方法吗?_Javascript_Jquery_Html_Performance - Fatal编程技术网

Javascript 这是在单击按钮时将表行更改为表单的最佳方法吗?

Javascript 这是在单击按钮时将表行更改为表单的最佳方法吗?,javascript,jquery,html,performance,Javascript,Jquery,Html,Performance,我编写了下面的jQuery,以允许在单击链接时将表中的一行更改为可编辑的形式。行的类被传递到函数中 function enableform(x) { $("." + x +" .disabled").prop("disabled", false); $(".icon-pencil").css("display", "none"); $( "." + x +" input" ).removeClass("disabled"); $( "." + x +" sele

我编写了下面的jQuery,以允许在单击链接时将表中的一行更改为可编辑的形式。行的类被传递到函数中

function enableform(x) {

    $("." + x +" .disabled").prop("disabled", false);
    $(".icon-pencil").css("display", "none");
    $( "." + x +" input" ).removeClass("disabled");
    $( "." + x +" select" ).removeClass("disabled");
    $( "." + x +" td.dropdown" ).addClass("test");
    $( "." + x +" td" ).removeClass("dropdown");
    $("." + x +" .icon-ban").css("visibility", "visible");
    return false;
};

function disableform(x) {
    $( "." + x +" input" ).addClass("disabled");
    $( "." + x +" select" ).addClass("disabled");
    $( "." + x +" td.test" ).addClass("dropdown");
    $("." + x +" .disabled").prop("disabled", true);
    $(".icon-pencil").css("display", "block");
    $("." + x +" .icon-ban").css("visibility", "hidden");
    return false;
};

基本上,表单已经存在,但是应用了类使其看起来像静态文本,并且使用disabled属性使其不可编辑。单击每行末尾的按钮时,相应的行将变回一个窗体,单击“取消”按钮时则相反。基本上,我只是想让更有经验的人告诉我这是否是实现这一点的最佳方法,如果不是,如何改进?

我建议将类(隐藏/显示、使可编辑等)添加到行中,而不是其中的每个元素。因此,单击一次,您将让按钮获取它所在的行,然后在该行上设置一个类(类似于“可编辑”)

您以前使用的样式如下:

input.disabled{
  --styles go here--
}
select.disabled{
  --styles go here--
}
function enableform(x) {
    $("." + x +" .disabled").prop("disabled", false).removeClass("disabled");
    $( "." + x +" td.dropdown" ).addClass("test");
    $( "." + x +" td" ).removeClass("dropdown");
    $(".icon-pencil").hide();
    $("." + x +" .icon-ban").show();
    return false;
};

function disableform(x) {
    $( "." + x +" input select" ).addClass("disabled");
    $( "." + x +" td.test" ).addClass("dropdown");
    $("." + x +" .disabled").prop("disabled", true);
    $(".icon-pencil").css("display", "block");
    $("." + x +" .icon-ban").hide();
    return false;
};
你现在应该

tr.enabled input{
  --styles go here--
}
tr.enabled select{
  --styles go here--
}

我建议将类(隐藏/显示、使可编辑等)添加到行中,而不是其中的每个元素。因此,单击一次,您将让按钮获取它所在的行,然后在该行上设置一个类(类似于“可编辑”)

您以前使用的样式如下:

input.disabled{
  --styles go here--
}
select.disabled{
  --styles go here--
}
function enableform(x) {
    $("." + x +" .disabled").prop("disabled", false).removeClass("disabled");
    $( "." + x +" td.dropdown" ).addClass("test");
    $( "." + x +" td" ).removeClass("dropdown");
    $(".icon-pencil").hide();
    $("." + x +" .icon-ban").show();
    return false;
};

function disableform(x) {
    $( "." + x +" input select" ).addClass("disabled");
    $( "." + x +" td.test" ).addClass("dropdown");
    $("." + x +" .disabled").prop("disabled", true);
    $(".icon-pencil").css("display", "block");
    $("." + x +" .icon-ban").hide();
    return false;
};
你现在应该

tr.enabled input{
  --styles go here--
}
tr.enabled select{
  --styles go here--
}

这似乎有点乏味。我建议为这两个状态创建CSS规则,并在行的父容器上添加/删除一个类,这样就不必向多个元素添加多个类,也不必调整大量CSS值

然后在JS中切换该类

function enableform(x) {
var element = $("." + x); 
element.addClass("enabled");
element.prop("disabled", false);
return false;
};

function disableform(x) {
var element = $("." + x); 
element.removeClass("enabled"); 
element.prop("disabled", true);
return false;
};

我不太清楚为什么要返回
false
或者为什么要处理一个“disabled”属性…需要在那里看到更多的代码来对此进行评论,所以我把它留在了代码中,这似乎有点乏味。我建议为这两个状态创建CSS规则,并在行的父容器上添加/删除一个类,这样就不必向多个元素添加多个类,也不必调整大量CSS值

然后在JS中切换该类

function enableform(x) {
var element = $("." + x); 
element.addClass("enabled");
element.prop("disabled", false);
return false;
};

function disableform(x) {
var element = $("." + x); 
element.removeClass("enabled"); 
element.prop("disabled", true);
return false;
};

不太清楚为什么返回
false
或者为什么处理“disabled”属性…需要查看更多代码来对此进行评论,因此我将其保留在代码中您的代码需要改进。由于所有不同的jquery选择,它看起来非常复杂且难以阅读。我简化了一些代码,如下所示:

input.disabled{
  --styles go here--
}
select.disabled{
  --styles go here--
}
function enableform(x) {
    $("." + x +" .disabled").prop("disabled", false).removeClass("disabled");
    $( "." + x +" td.dropdown" ).addClass("test");
    $( "." + x +" td" ).removeClass("dropdown");
    $(".icon-pencil").hide();
    $("." + x +" .icon-ban").show();
    return false;
};

function disableform(x) {
    $( "." + x +" input select" ).addClass("disabled");
    $( "." + x +" td.test" ).addClass("dropdown");
    $("." + x +" .disabled").prop("disabled", true);
    $(".icon-pencil").css("display", "block");
    $("." + x +" .icon-ban").hide();
    return false;
};
注意,您可以在一个jquery命令中使用多个选择器语句。然后,您可以将不同的函数链接到同一个选择

我注意到您返回false,因为这些是按钮按下,我猜您正在html中添加onclick=“dosomething()”。不执行此操作,而是将单击功能绑定到按钮:

$("#buttonID").click(function(){
    Do code here.  $(this) is the object of the currently clicked button if we need it.
})

我还没有测试过我的代码,但它应该会让您朝着正确的方向前进。

您的代码需要改进。由于所有不同的jquery选择,它看起来非常复杂且难以阅读。我简化了一些代码,如下所示:

input.disabled{
  --styles go here--
}
select.disabled{
  --styles go here--
}
function enableform(x) {
    $("." + x +" .disabled").prop("disabled", false).removeClass("disabled");
    $( "." + x +" td.dropdown" ).addClass("test");
    $( "." + x +" td" ).removeClass("dropdown");
    $(".icon-pencil").hide();
    $("." + x +" .icon-ban").show();
    return false;
};

function disableform(x) {
    $( "." + x +" input select" ).addClass("disabled");
    $( "." + x +" td.test" ).addClass("dropdown");
    $("." + x +" .disabled").prop("disabled", true);
    $(".icon-pencil").css("display", "block");
    $("." + x +" .icon-ban").hide();
    return false;
};
注意,您可以在一个jquery命令中使用多个选择器语句。然后,您可以将不同的函数链接到同一个选择

我注意到您返回false,因为这些是按钮按下,我猜您正在html中添加onclick=“dosomething()”。不执行此操作,而是将单击功能绑定到按钮:

$("#buttonID").click(function(){
    Do code here.  $(this) is the object of the currently clicked button if we need it.
})

我还没有测试我的代码,但它应该能让您朝着正确的方向前进。

如果您没有创建单个元素,而是有一个空的“可编辑”行,您可以用单击来替换一个不可编辑的行,然后只需设置正确的值?如果没有创建单个元素,而是有一个空的“可编辑”行你可以用单击替换一个不可编辑的字段,然后只设置正确的值?除了几个链接之外,我不会显示/隐藏元素,我正在改变表单字段的外观,使其不再像字段,并将其禁用,以便无法编辑。对。。。所以改变外观的样式会放在上面写着“样式放在这里”的地方。这可能包括从显示/隐藏到更改边框、颜色、字体等任何内容。对不起,读错了您的文章!现在说得通了!除了几个链接之外,我没有显示/隐藏元素,我正在改变表单字段的外观,使它们不再像字段,并将其禁用,以便无法编辑。对。。。所以改变外观的样式会放在上面写着“样式放在这里”的地方。这可能包括从显示/隐藏到更改边框、颜色、字体等任何内容。对不起,读错了您的文章!现在说得通了!