选择具有多个属性的多个元素(语言切换器)

时间:2012-07-21 17:31:14

标签: jquery attributes click

为什么$('*[lang|="de"][lang|="sv"]').hide();没有选择然后用lang =" de"隐藏我所有的h1s,h2s和ps。和郎=" se"属性?例如

<p lang="de">Lorem Ipsum ist ein einfacher Blindtext für die Druckindustrie.</p>
<p lang="en">Lorem Ipsum is simply dummy text of the printing industry.</p>
<p lang="sv">Lorem Ipsum är en utfyllnadstext från tryckindustrin.</p>

我是在一个非常简单的三语选择器(默认为英语)之后,如

<script type="text/javascript">
$('*[lang|="de"][lang|="sv"]').hide();

$("#lang_de").click(function (event) {
event.preventDefault();
$('*[lang|="en"][lang|="sv"]').hide();
$('*[lang|="de"]').show();
});

$("#lang_sv").click(function (event) {
event.preventDefault();
$('*[lang|="de"][lang|="en"]').hide();
$('*[lang|="sv"]').show();
});
</script>

属性选择器不能以这种方式组合吗?

编辑:这对我来说效果很好

(function () {
$('*[lang|="de"], *[lang|="sv"]').hide();

$("#lang_de").click(function (event) {
    event.preventDefault();
    $('*[lang|="en"], *[lang|="sv"]').hide();
    $('*[lang|="de"]').show();
});

$("#lang_sv").click(function (event) {
    event.preventDefault();
    $('*[lang|="de"], *[lang|="en"]').hide();
    $('*[lang|="sv"]').show();
});
})();

1 个答案:

答案 0 :(得分:2)

查看jsfiddle

在jQuery中拥有multiple selectors时需要添加逗号。它应该看起来像

$('*[lang|="de"], *[lang|="sv"]').hide();

我还修复了你的点击事件。它也没用。它也需要通过*[lang|="de"]调用来选择。您可以在jsfiddle中看到一个工作示例。

以下是Multiple Selector

的jQuery文档

不完全是您的语言切换器的实现。但是,如果您希望在整个网站上进行此操作,而不是使用每种语言多次写出您的网站,请查看Multi Language网站的此帖子

**更新**

有关未将*用作选择器

的一部分,请参阅此jsfiddle