有什么方法可以获取触发事件的元素的ID ?

我在想:

$(document).ready(function() { $(“a”).click(function() { VaR 测试 = caller.id; alert(test.val()); }); }); <script type=“text/javascript” src=“starterkit/jquery.js”></script> <表单类=“项目” id=“aaa”> <输入类=“标题”></input> </form> <表单类=“项目” id=“bb”> <输入类=“标题”></input> </form>

当然,除了var测试应该包含id“aaa”(如果事件是从第一个表单触发)和“bbb”(如果事件是从第二个表单触发)。


当前回答

已经有很多方法和示例可以做到这一点,但如果您需要更进一步,需要防止在表单上使用enter键,但仍然需要在多行文本区域上使用它,那么就变得更加复杂了。下面的方法可以解决这个问题。

<script>
    $(document).ready(function() {
      $(window).keydown(function(event){
        if(event.keyCode == 13) {
           //There are 2 textarea forms that need the enter key to work.
            if((event.target.id=="CommentsForOnAir") || (event.target.id=="CommentsForOnline"))
            {
                // Prevent the form from triggering, but allowing multi-line to still work.
            }
            else
            {
                event.preventDefault();
                return false;
            }         
        }
      });
    });
</script>

<textarea class="form-control" rows="10" cols="50" id="CommentsForOnline" name="CommentsForOnline" type="text" size="60" maxlength="2000"></textarea>

它可能可以更简化,但你知道这个概念。

其他回答

对于所有事件,不限于jQuery可以使用

var target = event.target || event.srcElement;
var id = target.id

事件的地方。目标失败,则返回事件。IE的srcElement。 澄清一下,上面的代码不需要jQuery,但也可以使用jQuery。

已经有很多方法和示例可以做到这一点,但如果您需要更进一步,需要防止在表单上使用enter键,但仍然需要在多行文本区域上使用它,那么就变得更加复杂了。下面的方法可以解决这个问题。

<script>
    $(document).ready(function() {
      $(window).keydown(function(event){
        if(event.keyCode == 13) {
           //There are 2 textarea forms that need the enter key to work.
            if((event.target.id=="CommentsForOnAir") || (event.target.id=="CommentsForOnline"))
            {
                // Prevent the form from triggering, but allowing multi-line to still work.
            }
            else
            {
                event.preventDefault();
                return false;
            }         
        }
      });
    });
</script>

<textarea class="form-control" rows="10" cols="50" id="CommentsForOnline" name="CommentsForOnline" type="text" size="60" maxlength="2000"></textarea>

它可能可以更简化,但你知道这个概念。

this.element.attr("id")在IE8中正常工作。

你可以简单地使用:

$(this).attr("id");

Or

$(event.target).attr("id");

但是$(this).attr("id")将返回事件监听器所附加的元素的id。 而当我们使用$(event.target).attr("id")时,它将返回被单击元素的id。 例如,在<div>中,如果我们有一个<p>元素,那么如果我们点击'div' $(event.target).attr("id")将返回<div>的id,如果我们点击'p',那么$(event.target).attr("id")将返回<p>的id。 所以根据你的需要使用它。

以Angular 7为例。你可以得到原生元素和它的id或属性。

myClickHandler($event) {
    this.selectedElement = <Element>$event.target;
    console.log(this.selectedElement.id)
    this.selectedElement.classList.remove('some-class');
}

html:

<div class="list-item" (click)="myClickHandler($event)">...</div>