我正在尝试选择某个链接并打开一个对话框。
$('#edit').click(function(e) {
var url = $(this).attr('href');
var dialog_form = $('<div id="dialog-form">Loading form...</div>').dialog({
autoOpen: false,
width: 520,
modal: true,
open: function() {
return $(this).load(url + ' #content');
},
close: function() {
$('#dialog-form').remove();
}
});
dialog_form.dialog('open');
e.preventDefault();
});
在包含多个编辑链接的页面上
<a href="articles/edit/1" id="edit">edit</a>
<a href="articles/edit/2" id="edit">edit</a>
但代码仅在只有一个编辑链接时才有效。
如何动态选择我点击的确切链接?
答案 0 :(得分:3)
ID
属性必须是唯一的,即HTML无效。浏览器将始终返回第一次出现。
您可以改用类名。
<a href="articles/edit/1" class="edit">edit</a>
并且,您需要将选择器修改为.edit
以按类名查找元素。
$('.edit').click(function(e) {
...
});
从HTML5开始,您还可以使用data-*
属性。
答案 1 :(得分:2)
首先,不使用重复的ID属性 - 它们应该对DOM中的每个元素都是唯一的。如果你想要一个选择器,请改用classnames:
<a href="articles/edit/1" class="edit">edit</a>
<a href="articles/edit/2" class="edit">edit</a>
其次,使用on()
代替click()
:
$('.edit').on('click', function(e) {
var url = $(this).attr('href');
var dialog_form = $('<div id="dialog-form">Loading form...</div>').dialog({
autoOpen: false,
width: 520,
modal: true,
open: function() {
return $(this).load(url + ' #content');
},
close: function() {
$('#dialog-form').remove();
}
});
dialog_form.dialog('open');
e.preventDefault();
});
答案 2 :(得分:0)
具有相同ID的两个元素是无效的HTML。改为使用类。