我尝试在.click()
上设置一个<a>
,以确定每次点击都不会触发,它打算做的是打开一个对话框。
这不是我需要将值传递给我的jquery的唯一问题。我只是想不出这个。
我需要它是<a>
因为它已经在下拉菜单中了。你有什么建议吗?
修改 这是我使用的代码,它可以工作
$(document).ready(function() {
$('#dialog').dialog({ autoOpen: false, bgiframe: true, modal: true, height: 600, width: 1000, Close: function() { $(this).dialog('destroy'); } });
$('a').live('click', function(evt) {
evt.preventDefault();
var ids = $(this).attr('id');
var first = "<iframe style='width: 100%; height: 100%;' src='" + "" + "'</iframe>'";
$('.iframe').html(ids);
$('#dialog').dialog('open');
});
});
这段代码打开了对话框,每次点击都会打开,每次都有效,这里的技巧就是最后的'破坏'和暗杀
答案 0 :(得分:1)
每次点击都会触发。虽然我怀疑情况会是这样,但请检查您是否有任何其他事件处理程序正在监听正在应用event.stopImmediatePropagation()
的'a'。尝试在点击处理程序的末尾添加return false
,甚至更好:
$('a').click(function(evt) {
var first = "<iframe style='width: 100%; height: 100%;' src='" + need to put value here + "'</iframe>'";
$('.iframe').html(first);
$('#dialog').dialog({ bgiframe: true, modal: true, height: 600, width: 1000 });
evt.preventDefault();
});
如果您没有阻止锚标记的默认操作,您可能会发现页面正在重新加载,这会给人留下一些印象。
你在考虑什么样的“价值”?您可以使用jQuery的data()来存储信息,当然您也可以访问该范围内的所有全局变量。
修改强> 要回答您的评论,您可以按如下方式检索Click事件中的a的ID:
var theIdOfTheA = $(this).attr('id');
请注意,这必须放在处理程序中。
<强> EDIT2:强>
$('a').live('click', function(evt) {
var first = "<iframe style='width: 100%; height: 100%;' src='" + $(this).attr('id') + "'</iframe>'";
$('.iframe').html(first);
$('#dialog').dialog({ bgiframe: true, modal: true, height: 600, width: 1000 });
evt.preventDefault();
});
答案 1 :(得分:1)
DEMO: http://jsbin.com/olalu/edit
确保您关闭对话框,然后再次打开它!
<a href='javascript:;' id='my_unique_id' >click</a>
<强> EDITED 强>
$('a').click(function(evt) {
evt.preventDefault();
var theIdOfTheA = this.id;
var first = "<iframe style='width: 100%; height: 100%;' src='" +
"http://www.sf.se" + "'</iframe>'";
$('.iframe').html(theIdOfTheA);
$('#dialog').dialog({
bgiframe: true,
modal: true,
height: 600,
width: 1000,
//this
Close: function() { $(this).dialog('close'); },
//OR this OR both
Cancel: function() { $(this).dialog('close'); }
});
});
答案 2 :(得分:0)
您可以通过执行以下操作(来自jQuery docs)将数据传递到事件处理程序:
$('#foo').bind('custom', function(event, param1, param2) {
alert(param1 + "\n" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);
所以你可以这样做:
$(document).ready(function() {
$('a').bind("click", function(event, myValue) {
var first = "<iframe style='width: 100%; height: 100%;' src='" + myValue + "'</iframe>'";
$('.iframe').html(first);
$('#dialog').dialog({ bgiframe: true, modal: true, height: 600, width: 1000 });
});
});
请注意,您现在使用bind()来绑定事件处理程序,并且该函数正在接收一个值(根据您的需要命名它)。要在iframe中显示google:
$('a').trigger('click', ['http://www.google.com']);