【发布时间】:2014-04-27 08:33:19
【问题描述】:
我有一个包含以下元素的default.aspx 页面:
- 列表视图
- Div ID = 子视图
- 两个复制按钮
当用户点击这些按钮中的任何一个时,我想复制一些文本并禁用点击的按钮。
我做到了。复制功能正常工作,禁用样式在两个按钮上也正常工作。
列表视图的每一行都有一个链接。如果用户单击该链接,我想使用 jquery .load 函数加载另一个页面 subview.aspx 并将结果放入 div ID = subview
$('#subView').load('SubView.aspx?');
子视图页面还包含两个复制按钮。 这些按钮可以复制正确的文本,但是,当用户单击其中任何一个按钮时,它们不会变为禁用状态。
我的代码
我在default.aspx 的顶部添加了zeroclipboard.js。
这是 default.aspx 中的两个按钮:
<button type="button" id="Button1" class="copyToBtn" type="button" data-clipboard-text="<%#Eval("Telephone")%>" title="Copy Phone">Copy Phone Number</button>
<button type="button" id="Button3" class="copyToBtn" data-clipboard-text="<%#Eval("Surname")%>" title="Copy Surname">Copy Surname</button>
<script type="text/javascript" src="zero/jjjj.js"></script>
这是 subview.aspx 中的两个按钮
<button type="button" id="Button1" class="copyToBtn" type="button" data-clipboard-text="<%#Eval("Telephone")%>"title="Copy Phone">Copy Phone Number</button>
<button type="button" id="Button3" class="copyToBtn" data-clipboard-text="<%#Eval("Surname")%>" title="Copy Surname">Copy Surname</button>
<script type="text/javascript" src="zero/jjjj.js"></script>
这是jjjj.js
var client = new ZeroClipboard(document.getElementById("Button1"), {
moviePath: "/zero/ZeroClipboard.swf"
});
client.on("load", function (client) {
client.on("complete", function (client, args) {
$('.copyToBtn').each(function () {
$(this).removeAttr('disabled').removeClass('ui-state-disabled');
});
if (this.id == "Button1") {
$("#Button1").attr("disabled", "disabled");
}
else if (this.id == "Button3") {
$("#Button3").attr("disabled", "disabled");
}
alert(this.id);
});
});
var client3 = new ZeroClipboard(document.getElementById("Button3"), {
moviePath: "/zero/ZeroClipboard.swf"
});
client3.on("load", function (client3) {
client3.on("complete", function (client3, args) {
$('.copyToBtn').each(function () {
$(this).removeAttr('disabled').removeClass('ui-state-disabled');
});
if (this.id == "Button1") {
$("#Button1").attr("disabled", "disabled");
}
else if (this.id == "Button3") {
$("#Button3").attr("disabled", "disabled");
}
alert(this.id);
});
});
请注意警报仅适用于 default.aspx,而不适用于 subview.aspx 认为复制功能在 subview 和 default 中完全正常。 aspx.
请帮忙
【问题讨论】:
-
你在哪里提到
$('#subView').load('SubView.aspx?');? -
我无法从您的描述中真正看出,但是如果您要替换 DOM 元素,那么这些 DOM 元素上的任何先前事件处理程序都将被清除(它们被附加到没有不再存在)。您要么必须将事件处理程序重新附加到新替换的 DOM 元素,要么切换到使用委托事件处理,在这种情况下您依赖事件传播并将事件附加到本身未被替换的父对象。
-
@samitha 当用户点击列表视图任意行内的链接时,会有一个脚本包含
.load -
@jfriend00 我知道。这就是为什么我将
jjjj.js重新包含到 subview.aspx 中(如问题中所述)。此外,当我从 subview.axps 中删除该脚本时,复制按钮停止工作(即:停止复制文本)。 -
在我看来,依赖嵌入在动态加载的内容中的脚本是一种不好的做法。最好在页面中已有您需要的脚本,并在加载新内容后调用它们。正如我上面所说,我并没有真正了解您在做什么或您的描述中的问题是什么,所以只是想提供有用的信息。
标签: javascript jquery asp.net zeroclipboard