Javascript 禁用/启用后X-Editable AJAX调用不起作用
最近,我偶然发现了一个启用/禁用X-Editable表单的问题,但我(经过几天的尝试)还无法解决这个问题。任何帮助都将不胜感激 我创造了一把小提琴,包含了我问题的核心:Javascript 禁用/启用后X-Editable AJAX调用不起作用,javascript,html,x-editable,Javascript,Html,X Editable,最近,我偶然发现了一个启用/禁用X-Editable表单的问题,但我(经过几天的尝试)还无法解决这个问题。任何帮助都将不胜感激 我创造了一把小提琴,包含了我问题的核心: 我有多个可编辑的标签 输入应该使用ajax提交到服务器 到目前为止,一切都很完美。但是还有一个按钮,它基本上只是禁用和启用(在禁用之后)x-editable功能 如果在编辑标签之前单击此按钮,则不会进行AJAX调用 您可能会发现可疑的事情: 选择器:在我的(简化)示例中,实际上并不需要选择器。这是因为我们的应用程序的部分
- 我有多个可编辑的标签李>
- 输入应该使用ajax提交到服务器李>
- 选择器:在我的(简化)示例中,实际上并不需要选择器。这是因为我们的应用程序的部分是动态(重新)加载的
- 我为什么要这么做?我有多个标签,这些标签都应该是可编辑的,但一次只能编辑一个。因此,如果焦点改变,我会禁用所有这些,并启用刚刚获得焦点的人。好吧,至少我试着这么做
<button type="button" id='thebutton'>Don't click Me!</button>
<div style="margin: 150px" id='navi'>
<h4>
<a href="#" class='title'>awesome 1</a>
</h4>
<h4>
<a href="#" class='title'>awesome 2</a>
</h4>
<h4>
<a href="#" class='title'>awesome 3</a>
</h4>
</div>
<div id='output'>
...
</div>
已编辑-一些附加信息: 我们有一个导航(基本上是一个“文件夹结构”),由用户创建。这意味着用户应该能够添加额外的导航项,并根据需要重命名它们。用户只允许重命名活动项。在主面板中动态加载每个项目的内容 因此,当用户选择一个项目时,将运行以下脚本(在所有链接上禁用x-editable功能,并在新的活动链接上对其进行反应):
if (!$(this).hasClass("active")) {
// Load content to the main panel
DisplayOpRiskLeaf($(this).attr('id'));
// Change active navigation element
$('.oprisk-link').removeClass("active");
$(this).addClass("active");
$('.oprisk-leaves-panel').removeClass("active");
$(this).parents('.oprisk-leaves-panel').addClass("active");
// Change x-editable...
// disable all ($(this) is also getting disabled here)
$('.portfolio-title').editable('option', 'disabled', true);
// enable the active elemnt
$(this).editable('option', 'disabled', false);
}
禁用双重切换的目的是什么?你能解释一下你想要的行为中没有发生的是什么吗?我在问题中添加了一些额外的信息。在我对“切换”的定义中执行两次与不执行相同。如果您尝试在第一次切换时触发某个事件,为什么不直接调用它?这样做可能永远不会触发活动事件,因为在我对“切换”的定义中,在运行选择器之前,dom已更改回做两次和不做是一样的。-我完全同意。但是如果你看一看JSFIDLE,这不是发生的事情。另一个例子:我有10个项目,其中一个是可编辑的。现在我点击另一个项目(当前不可编辑),希望它可以编辑。因此我禁用了所有10个项目(所以我得到了之前可编辑的项目)并启用了新的项目。对不起,我忘记了上面示例中提到的要点:新的可编辑项目(我刚才单击的项目)被禁用(它已经被禁用)再次启用。禁用双重切换的目的是什么?您能解释一下您想要的行为是什么,但没有发生吗?我在问题中添加了一些附加信息。在我对“切换”的定义中执行两次与不执行相同。如果您尝试在第一次切换时触发某个事件,为什么不直接调用它?这样做可能永远不会触发活动事件,因为在我对“切换”的定义中,在运行选择器之前,dom已更改回做两次和不做是一样的。-我完全同意。但是如果你看一看JSFIDLE,这不是发生的事情。另一个例子:我有10个项目,其中一个是可编辑的。现在我点击另一个项目(当前不可编辑),希望它可以编辑。因此我禁用了所有10个项目(所以我得到了之前可编辑的项目)并启用了新项目。对不起,我忘记了上面示例中提到的要点:新的可编辑项目(我刚才单击的项目)被禁用(它已经被禁用)并再次启用。
if (!$(this).hasClass("active")) {
// Load content to the main panel
DisplayOpRiskLeaf($(this).attr('id'));
// Change active navigation element
$('.oprisk-link').removeClass("active");
$(this).addClass("active");
$('.oprisk-leaves-panel').removeClass("active");
$(this).parents('.oprisk-leaves-panel').addClass("active");
// Change x-editable...
// disable all ($(this) is also getting disabled here)
$('.portfolio-title').editable('option', 'disabled', true);
// enable the active elemnt
$(this).editable('option', 'disabled', false);
}