简体   繁体   English

从多个div标签中选择特定元素作为点击事件主干

[英]Select specific element from mulitple div tags for click event backbone

I have a html template 我有一个html模板

<div class="subtemplate-wrapper">
<div class="cover"></div>
<label>
<span>
Description
<abbr title="required">*</abbr>
</span>
</label>
<textarea required="required"></textarea>
<span class="help-block"> </span>
</div>

Also I want to bing an event click on this based on class subtemplate-wrapper. 我也想通过类subtemplate-wrapper对此事件单击。 How do i get which elemt was was clicked ? 我如何获取被点击的元素? I want to later get the access the value of the element clicked. 我想稍后再获取单击元素的值。

events: {
          'click .subtemplate-wrapper': 'getTextInput'
        },
        getTextInput: function(ev) {
          var clicked_element = $(ev.currentTarget) // does not give me what is clicked !
        },

Use 采用

var $clicked_element = $(ev.target)

This will give you the element on which the event has occurred. 这将为您提供发生事件的元素。

And then the usual $clicked_elemen.val() 然后是通常的$clicked_elemen.val()

ev.currentTarget will always give you the element to which the event was bound, in this case, <div class="subtemplate-wrapper"> ev.currentTarget将始终为您提供事件绑定到的元素,在这种情况下,为<div class="subtemplate-wrapper">

Also, if you really want a click handler only on the TextArea , you should rather have your selector as 另外,如果你真的想要一个click 只有在处理TextArea ,你倒是应该有你的选择为

'click .subtemplate-wrapper textarea': 'getTextInput'

than on the wrapper itself. 而不是包装器本身。

    events: {
      'click .subtemplate-wrapper': 'getTextInput'
    },
    getTextInput: function(ev) {
      var clicked_element = $(ev.currentTarget) // does not give me what is clicked !

      console.log('text is ');
      console.log(clicked_element.find('textarea').val());

    },

As I commented above, you should not bind to the wrapper because when use clicks in the text area, it will execute. 正如我在上面评论的那样,您不应绑定到包装器,因为在文本区域中使用单击时,它将执行。 You should bind do something like this: 您应该绑定执行以下操作:

<div class="subtemplate-wrapper">
    <div class="cover"></div>
    <label>
        <span>
            Description
                <abbr title="required">*</abbr>
        </span>
    </label>
    <textarea id="textContent" required="required"></textarea>
    <span class="help-block"> </span>

    <div id="submit">
   Submit
    </div>
</div>


    events: {
      'click #submit': 'getTextInput'
    },
    getTextInput: function(ev) {
      var clicked_element = $(ev.currentTarget) 

      console.log('text is ');
      console.log(clicked_element.parent().find('textarea').val());

    },

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM