0

我在多个下拉框上执行相同的功能id: assignee, status , priority

$("#assignee , #status , #priority").change(function() { 

//text here

}

但我想知道点击了哪个特定的下拉菜单。有什么方法可以做到这一点吗?

4

5 回答 5

2

只需使用以下内容:

$("#assignee, #status, #priority").change(function() { 
    if (this.id === "assignee") { ... }
});
于 2013-02-06T09:40:34.913 回答
2

用这个。在任何事件处理程序中,这都指向发生实际事件的元素:

$("#assignee , #status , #priority").change(function() { 
    var changedElementID = $(this).attr("id");
}

另一种选择是使用event.target

$("#assignee , #status , #priority").change(function(e) { 
        var changedElementID = $(e.target).attr("id");
    }

在这里您可以找到有关其他事件对象属性的更多详细信息。

注意thise.target都是 DOM 对象,而不是 jQuery 对象。所以你需要像上面的代码一样用 jquery 包装它来使用 jQuery 函数。如果只是获取一个 id - 您可以直接使用this.ide.target.id更快。

于 2013-02-06T09:40:52.357 回答
1

当事件被触发时,事件处理函数内部this指的是触发事件的元素,所以:

$('#assignee, #status, #priority').change(function(e) {
    // Use 'this' to refer to the element that triggered the event
    console.log(this.id);
    // will output assignee, status or priority depending on which changed
});
于 2013-02-06T09:40:52.323 回答
0

使用目标:

$("#assignee , #status , #priority").change(function(e) { 
        var changedElementID = $(e.target).attr("id");
    }
于 2013-02-06T09:41:35.520 回答
0

你在哪里绑定你<option>的传递this到函数并使用你自己的代码

$("#assignee , #status , #priority").change(function(boxID) { 
console.log($(boxID).val());    //Gives you the value of the selected drop down


//text here

}
于 2013-02-06T09:44:20.177 回答