2016-10-19 83 views
0

下面的代码是添加一个占位符到我的#e_newsletter_email div。不过,我为电子通讯添加了一个额外的注册框,占位符并未显示在第二个注册框中。有没有办法将这个代码应用于注册框?WordPress的 - jQuery的功能,以同一类/ ID多个元素

jQuery(function($) { 
    $('#e_newsletter_email').attr('placeholder', 'You Email Address'); 
}); 

我已尝试添加该代码,迫使ID添加一个类,但这又只适用于第一个ID。任何其他想法?

jQuery(function($) { 
    $('#e_newsletter_email').addClass('e_newsletter_email'); 
}); 

感谢

+0

ID的应该是唯一的每个元件 - 使用ID作为jQuery选择将仅影响一个元件,如jQuery的(因为它应该)假定有*是*仅一个具有该ID的元素。使用类名执行相同的命令应该可以正常工作。 jQuery文档的ID选择器页面陈述了'Description:选择具有给定id属性的单个元素。' –

+0

使用给选择器的“class”属性赋予这两个元素,比如'$('。newsletter_email_class')。attr ('placeholder','Your text');' – Vyacheslav

+0

我正在使用自动生成ID的插件。我无法编辑它。有没有一种方法可以使用jquery向此ID添加类? – William

回答

0

经过@ mark.hch的一些帮助,我们可以找出如何创建解决方法。下面是最终代码:

<script type="text/javascript"> 

jQuery(function($) { 
$('input').each(function() { if($(this).attr('id') == 'e_newsletter_email') { $(this).addClass('e_newsletter_email_custom'); } }); 
}); 

jQuery(function($) { 
    $('.e_newsletter_email_custom').attr('placeholder', 'You Email Address'); 
}); 

</script> 

首先,我们通过每个ID需要循环,并添加一个新类到e_newsletter_email(这是正在使用两次)。然后,一旦我们将类添加到id中,我们就可以更新原始函数来使用class而不是id,并且一切都很完美!

0

一个ID只能使用一次。对不需要唯一标识的元素使用类。

+0

我正在使用一个自动生成ID的插件,我无法编辑它,有没有一种方法可以使用jquery为这个ID添加一个类?我已经对我的问题做了轻微的修改。 – William

0

问题的真正答案是在两个字段中使用类而不是ID。正如评论中所提到的,ID应该对页面上的每个元素都是唯一的。然而,在这种情况下,元素只包含一个ID,然后问题变成如何向元素添加一个类,以便未来的选择器可以抓住它们全部(或两者)来操纵它们。

使用ID选择器$('#e_newsletter_email')只选择一个元素(因为jQuery假定只有一个具有该ID的元素)。所以我们需要一个更普遍的选择器 - 在这种情况下,两个元素都是输入,所以选择器$('input')应该至少抓住那些元素。

由于页面上的输入可能比有问题的输入多,因此我们需要筛选出我们想要的输入;在这种情况下,我们比较元素的ID属性(因为我们知道,即使它们应该是唯一的,但实际上它们包含相同的ID)。

即使有多个具有相同ID的元素,抓取元素的ID也会起作用(即使不是唯一的,$(this).attr('id')也会始终显示元素的分配ID)。

因此,代码变为:

//loop through all inputs 
$('input').each(function() { 
    //if the input currently iterating over has the ID in question 
    if$(this).attr('id') == 'e_newsletter_email') { 
    //add the class for the input 
    $(this).addClass('e_newsletter_email_custom'); 
    } 
}); 
相关问题