如何绑定多个元素的事件?

时间:2012-12-26 20:23:06

标签: jquery

我有这段代码:

var li = $('<li>',{
   html : '<div class="header">' + header + '</div><div class="subheader">' 
          + sub_header + '</div><div class="optkey">' + option_key + '</div>'
            });

var tmpLi = li.first()[0].firstChild;

if( active ) {
    li.bind({
        mousedown: function(event) {
            console.log("mousedown");
            event.stopPropagation();
            select_box.find('.sbContent').html($(this).find('.header').html());
            select_box_disabled.find('.sbContent').html($(this).find('.header').html());
            select_options_container.trigger('hide');
            // *FINISH* need to update the original select input with the new value
            var key = $(this).find('.optkey').html();

            select_source.find('option:selected').removeAttr('selected');
            select_source.find('option:eq(' + key + ')').attr('selected', 'selected').change();
            return false;
        }

    }),

    tmpLi.bind({
        keypress: function(event) {
            console.log("keypress");
            event.stopPropagation();
            select_box.find('.sbContent').html($(this).find('.header').html());
            select_box_disabled.find('.sbContent').html($(this).find('.header').html());
            select_options_container.trigger('hide');
            // *FINISH* need to update the original select input with the new value
            var key = $(this).find('.optkey').html();

            select_source.find('option:selected').removeAttr('selected');
            select_source.find('option:eq(' + key + ')').attr('selected', 'selected').change();
            return false;
        }

    });
} 

在我添加tmpLi.bind块之前,它运行正常。现在,我在Firebug中遇到了这个错误:

  

TypeError:tmpLi.bind不是函数

     

keypress:function(event){

如何将唯一事件绑定到同一if语句中的两个元素?或者tmpLi不是有效元素的问题是什么? (tmpLi返回html字符串<div class="header">

1 个答案:

答案 0 :(得分:2)

tmpLi不是jQuery对象(只是一个DOM元素),因此没有bind方法。

您可以将作业重写为tmpli来分配jQuery对象:

var tmpLi = li.first().children().first();