Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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
如何使用Jquery动态选择特定链接?_Jquery_Ruby On Rails_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

如何使用Jquery动态选择特定链接?

如何使用Jquery动态选择特定链接?,jquery,ruby-on-rails,jquery-ui,jquery-ui-dialog,Jquery,Ruby On Rails,Jquery Ui,Jquery Ui Dialog,我正在尝试选择某个链接并打开一个对话框 $('#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, ope

我正在尝试选择某个链接并打开一个对话框

  $('#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>
但该代码仅在只有一个编辑链接时有效

如何动态选择我单击的确切链接?

首先,不要使用重复的ID属性-它们对于DOM中的每个元素都应该是唯一的。如果需要选择器,请改用类名:

<a href="articles/edit/1" class="edit">edit</a>
<a href="articles/edit/2" class="edit">edit</a>
ID属性必须是唯一的,这是无效的HTML。浏览器将始终在第一次出现时返回

您可以改用类名

<a href="articles/edit/1" class="edit">edit</a>

从HTML5开始,您还可以使用data-*属性。

具有相同id的两个元素是无效的HTML。改用类。

我不同意,但使用.on代替。单击此处没有好处我不知道为什么,但“on”不起作用,但“click”似乎与您提到的更改类的id一起起作用。@DanielSunYang您需要使用on,因为click正变得不受欢迎。更新您的jQuery版本,您就可以使用它了。@Alexander,因为将来他很可能希望访问动态添加的事件elements@hohner,您能否提供对的弃用通知的参考。单击?很抱歉,但我想你有点困惑,这已经奏效了,谢谢!你知道为什么霍纳的建议不起作用吗?使用on而不是click@DanielSunYang,您使用的是哪个版本的jQuery?无论如何,这个建议是毫无根据的,因为.click在内部使用.on。您可以使用.on进行事件委派,这显然不会发生在您的代码和他的回答上。啊,您是对的。我使用的是某人的示例应用程序,它有jQueryV1.6.1。感谢您的澄清。@DanielSunYang,您可以正常使用。单击,因为此速记应该使用推荐的方式将事件处理程序与当前版本绑定。虽然,升级jQuery总是被推荐的,但现在我陷入了从两个正确答案中选择的两难境地:D:,我为自己挖的洞。。。
<a href="articles/edit/1" class="edit">edit</a>
$('.edit').click(function(e) {
  ... 
});