听取对象点击

时间:2014-04-03 07:11:29

标签: javascript jquery html

我正在尝试收听“按钮”和“a”点击,然后将属性“name”的值传递给变量,我找不到我的代码有什么问题:

$('a').click(function() {
var anchor;
anchor=$(this).attr('name');
$('#linkPressed').val(anchor);
});

$('button').click(function() {
var anchor;
anchor=$(this).attr('name');
$('#linkPressed').val(anchor);
});

更新:我有一个PHP脚本根据“linkPressed”值执行不同的操作。看起来,此代码也适用于没有<a>属性的<button>"name",这会破坏我的脚本。有没有办法从“点击监听器”中排除没有"name"属性的对象?

5 个答案:

答案 0 :(得分:2)

您可以使用逗号,分隔选择器。它可能无法正常工作,因为您已经两次初始化anchor变量:

$('a, button').click(function() {
    var anchor;
    anchor=$(this).attr('name');
    $('#linkPressed').val(anchor);
});

答案 1 :(得分:2)

要仅选择具有属性name的元素,请使用attribute selector

$('a[name], button[name]').click(...);
// or
$('a, button').filter('[name]').click(...);

答案 2 :(得分:2)

您只能将处理程序绑定到具有name属性的元素:

$('a[name], button[name]').click(function() {
    $('#linkPressed').val(this.name);
}

答案 3 :(得分:1)

,一次使用多个选择器删除重复代码

可能#linkPressed是一种标签类型,而不是当时在text()宫殿使用val()的输入类型

$('a,button').click(function() {
var anchor;
anchor=$(this).attr('name');
$('#linkPressed').val(anchor);
});

答案 4 :(得分:1)

我认为就是这样。

$("a, button").click(function() {
    var anchor;

    if($(this).attr("name") != undefined) {
         anchor=$(this).attr('name');
         $('#linkPressed').val(anchor);
    }
});