1

我正在努力使用 jquery 来识别我正在单击的按钮。

我有一个动态生成的列表类别以及一个删除按钮以将其从数据库中删除。

我的输入是这样的:

<input id="deletesector" class="deletesector" type="submit" name="deletesector-4" value="Remove"></input>
<input id="deletesector" class="deletesector" type="submit" name="deletesector-5" value="Remove"></input>
<input id="deletesector" class="deletesector" type="submit" name="deletesector-6" value="Remove"></input>

我的脚本侦听 .deletesector 单击,然后获取 attr 名称。但是,无论单击 3 个按钮中的哪一个,它都会返回 deletesector-4 的名称。

我该如何解决这个问题,以便如果单击“deletesector-5”,它会识别它。

  $(".deletesector").click(function() {  

    //store the id
    var name = $("input#deletesector").attr('name'); 

    //create the post variable string
    var dataString = 'serviceid='+ name;  
    alert (dataString); 
4

3 回答 3

4

this在点击处理程序的匿名函数内部使用:

$(".deletesector").click(function(){  
    var name = this.name
});

你总是得到nameof的原因是因为这是第一个(但不是唯一的)带有of的deleteselector4元素,必须是唯一的,HTML 才有效。考虑到这一点,选择器只会在搜索时查找一个元素,并在第一个元素处停止,假设它是唯一具有该元素的元素(应该如此)。iddeleteselectoridididid

鉴于idclassHTML中id

参考:

于 2013-11-14T23:04:01.973 回答
1

利用:

$(".deletesector").click(function(){  
    var name = $(this).attr('name');
    // your stuff here
});

this在 jQuery 事件中指的是被点击的元素。

此外,您的重复ids 会搞砸。

有关工作示例,请参阅此JSFiddle 。

于 2013-11-14T23:02:02.480 回答
0

首先,您有一些重复的 id。这是固定代码:

<input id="deletesector-4" class="deletesector" type="submit" name="deletesector-4" value="Remove"></input>
<input id="deletesector-5" class="deletesector" type="submit" name="deletesector-5" value="Remove"></input>
<input id="deletesector-6" class="deletesector" type="submit" name="deletesector-6" value="Remove"></input>

那么你的jQuery可能是这样的:

$(".deletesector").click(function(ev) {
  // CHECK THIS $(ev.target) element, very useful!
  elementClicked = $(ev.target);
  var name = elementClicked.attr('name'); 
  var dataString = 'serviceid='+ name;
  alert (dataString);
});

这是一个 JSFiddle,它显示了您的示例工作。

于 2013-11-14T23:08:05.017 回答