0

我正在用 li 创建一个 ul 元素,单击 li 后,我从 li 获取文本信息。一旦我得到了这些东西,我就不会像所有有孩子的父母一样,但我不能同时删除这两个..

这是我的功能:

$(document).ready(function(){

  var  gender = ['Female','Male'],
      genderField = $('#gender');

   var genderUpdate= function(){
            genderField.focus(function(){
                if(!$('#genderList').length){
                    var topPos = $(this).position().top,lftPos = $(this).position().left;
                    $('<ul id="genderList"></ul>').css({
                        position    :'absolute',
                        top         : topPos,
                        left        : lftPos
                    }).appendTo($(this).parent());


                    $.map(gender,function(val,i){
                        $('<li>'+val+'</li>').appendTo('#genderList');
                        console.log('append');
                    })

                   $('#genderList li').live('click', function(){
                        genderField.attr('value', $(this).text());
                        $(this).parent().remove();//not removing the parent with this sibilings.
                    })

                }


            })
        }

                        genderUpdate();

})

这是小提琴:

在这里摆弄

4

2 回答 2

1
  1. .live()在 JQuery 1.7+ 中已弃用,您应该改用.on()JQuery 1.7+。

  2. 您不想用 更改 HTML 属性.attr(),属性主要代表默认值。当你使用 Javascript 时,你应该通过.prop(). 使用 JQuery访问value属性时,您宁愿使用更简单的.val()JQuery 方法。
    发生的情况是.attr()在 JQuery 1.6 之前用于访问和设置 HTML 属性和 DOM 属性,现在情况不再如此。

  3. 扩展 Zee Tee 的答案,您还可以有一个预定义的隐藏 ul,您可以切换它,而不是每次用户在输入框中单击时生成一个新的。

你真的需要一个数组并动态设置 CSS 吗?好吧,我保留了这些特征,添加了上面列出的修复程序,这是一个有效的JSFiddle

编辑:在小提琴中添加了评论并正确地用分号加了分号。

于 2012-05-28T15:10:59.363 回答
1

尝试这样做:

     $("#genderList li").remove();

或者

     $("#genderList li").hide();

http://jsfiddle.net/85DM4/4/

唯一的问题是,一旦您选择它,它就不会让您再次选择它。我会重新评估一些事情,我希望在我第一次选择它之后能够再次看到那个窗口。

于 2012-05-28T14:46:59.163 回答