jquery引用以下选择器中的初始元素选择器

时间:2014-12-02 14:15:21

标签: javascript jquery

是否可以在以下select语句中引用原始选定元素:

$('.someclass').next('span').hide().parent().append('<input class="textbox" name="'+$(this).attr("name")+'-x'+'"/>');

其中$(this)是原始的$('。someclass')元素。

我试图从inital元素中获取属性以应用于语句中的另一个元素。

修改

由于初始元素是由类选择的,因此有多个具有相同类名的元素。

这是源html:

<div>
<input class="someclass" name="somename">
<span></span>

我想隐藏输入,并使用带有前缀的原始输入名称添加新输入。

2 个答案:

答案 0 :(得分:2)

您的标题会提出与您的问题不同的内容。

.end()遍历初始元素,但是您希望使用该元素来影响另一个元素。

$('.someclass').each(function(){
    $(this).next('span').hide().append('<input class="textbox" name="'+$(this).attr("name")+'-x'+'"/>');
})

http://jsfiddle.net/0ub2ht5s/

或者如果您更喜欢创建元素而不是HTML

$('.someclass').each(function(){
    $input = $('<input>', {
        name: $(this).attr("name")+'-x',
    }).addClass('textbox');
    $(this).next('span').append($input);
})

http://jsfiddle.net/0ub2ht5s/2/

我从小提琴中移除了.hide(),否则你什么也看不见。

你可以通过添加函数来提供你提供的语法,但是你会不必要地遍历,所以不要执行以下操作,它就是这里的例子:

$('.someclass').each(function(){
    $(this).next('span').append(function(){
        return '<input class="textbox" name="'+$(this).prev().attr("name")+'-x'+'"/>'
    });
})

http://jsfiddle.net/0ub2ht5s/1/

答案 1 :(得分:1)

使用您使用的语法是不可能的。您需要将原始元素存储在变量中:

var $el = $('.someclass');
$el.next('span').hide().parent().append('<input class="textbox" name="' + $el.attr("name") + '-x"/>');