我有一个"菜单"所有具有相同类别的元素。看起来像这样:
<div id="menu">
<div class="menu_item">
first
</div>
<div class="menu_item">
second
</div>
我怎样才能编写基本类似的jquery:
如果点击的class元素包含&#34; first&#34;然后做第一个选择。否则,如果它包含&#34;第二&#34;然后做第二个选择。
我的尝试:
$(".menu_item").click(function(){
if(".menu_item:contains("first")"){
$("#first_info").animate({opacity: 1,left: "50%" }, 'slow')
}
答案 0 :(得分:2)
尝试将类添加到菜单项第一个元素first
,就像这个<div class="menu_item first">
一样。
所以在你的JS中,这解释了,如果.menu_item
有类first
然后动画#first_info
元素,那么就这样做...
$("body").on('click', '.menu_item', function(){
if($(this).hasClass('first')){
$("#first_info").animate({opacity: 1, left: "50%" }, 'slow');
} else{
// do this
}
});
答案 1 :(得分:0)
在你的情况下,你可以做这样的事情。
$(".menu-item").click(function() {
var text = $(this).attr("class");
if (text.indexOf("first") != -1) {
//do option 1
};
if (text.indexOf("second") != -1) {
//do option 2
};
})
您处理点击事件。在该click事件中,您将检查元素文本。如果没有找到,IndexOf将返回-1,如果找到则返回位置。
当你执行这样的代码时,可以运行这两个选项,说你有一个类first second
的元素。如果您不想这样,请嵌套if。
答案 2 :(得分:0)
if
条件下的语法错误。
您可以使用以下代码段中的语法。此处捕获this
元素并使用is
方法和contains
选择器。
$(".menu_item").click(function() {
if ($(this).is(":contains('first')")) {
$("#first_info").animate({
opacity: 1,
left: "50%"
}, 'slow')
} else {}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="menu">
<div class="menu_item">
first
</div>
<div class="menu_item">
second
</div>
</div>
答案 3 :(得分:0)
$(".menu_item").click(function(){
if($(this).text().indexOf($(this).children().attr('id'))!== -1){
$(this).children().fadeOut(1000).fadeIn(1000);
}});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div id="menu">
<div class="menu_item">
first<div style="background:red" id="first_info" >first_info</div>
</div>
<div class="menu_item">
second<div style="background:yellow" id="second_info" >second_info</div>
</div>