用于动态添加对象的jQuery事件处理程序

时间:2015-03-24 21:20:49

标签: javascript jquery event-handling

我在jQuery中动态添加了DOM对象时遇到了问题。首先我用这个:

var $input = $('#search-input');
var $usersList = $('#ulist');

       $input.on('input', function () {
        $.ajax({
            type: 'get',
            url: '/userlist',
            data: {query: $input.val()},
            success: function (response) {

                var json = JSON.parse(response);
                $usersList.empty();
                $.each(json, function (index, val) {
                    $usersList.append("<div id=\"listelem\"><a href=\"#\">" + val + "</a></div>");  

                });
            }
        });
    });



 <div id="ulist"></div>
 <input id="search-input" type="text">

将div插入usersList。这很好用,但现在我想从这个div中获取val,当我点击它来进一步处理它。我写了这段代码:

$usersList.on('click','#listelem', function(){
   alert("clicked");
});

当我点击div时,我得到了适当的警报,但现在我不知道如何从这个元素内部获取数据。

4 个答案:

答案 0 :(得分:0)

试试这个

$(document).on('click','#listelem', function(event) {
   alert($(event.target).text());
 });

jsfiddle

答案 1 :(得分:0)

我不知道正确的工程,但我在制定一些要求时处理了类似的问题。基本上我理解你想要找出事件的目标并从中拖出一个值?如果是这样,你可以这样做:

jQuery(document).on('click', '#listelem', function(event){
var x = event.target.val();// event.target.value; depending on your situation and availability of the method.
});

希望这会有所帮助。

答案 2 :(得分:0)

谢谢你的帮助。对我来说,正确的选择就是致电

var mem = event.target.innerText;

答案 3 :(得分:0)

您可以使用常规javascript来做到这一点,不需要Jquery。

  document.addEventListener("click", function(e) {
    if(e.target) {
     console.log("item clicked ", e.target.textContent);
  }
});

这应该做得到当前目标值的工作。