2015-12-02 210 views
1

我有一個關於獲取子元素屬性的問題。jQuery獲取子元素的屬性

$ = jQuery; 

$(document).ready(function(){ 
    //var cat = $(".bear_image").children("img").attr("alt"); 
    var abs = $("li"); 
    $(abs).on("click", ".first", function(){ 
     var cat = $(this).children(".bear_image img"); 
     console.log(cat.attr("alt")); 
    }); 
}); 

它顯示未定義。

這裏是我的PHP代碼:

<li> 
     <input type="hidden" name="bear-id" value=<?php echo $bears['id']; ?>> 
     <div class="bear_image"><img src="<?php echo $bears['nuotrauka']['url'];?>" alt=<?php echo $bears['id']; ?>></div> 
     <div class="icons"> 
      <div class="first" id="1"><?php echo '<img src="' . content_url('/themes/NutMEDIA/images/bow.png', __FILE__) . '" > '; ?></div> 
      <div class="second" id="2" ><?php echo '<img src="' . content_url('/themes/NutMEDIA/images/tie.png', __FILE__) . '" > '; ?></div> 
      <div class="third" id="3"><?php echo '<img src="' . content_url('/themes/NutMEDIA/images/heart.png', __FILE__) . '" > '; ?></div> 
     </div> 
     <div style="clear:both;"></div> 
     <p class="bear_description"><?php echo $bears['aprasymas'];?></p> 
    </li> 

我需要輸出.bear_image IMG的ALT

+3

'div.first'沒有孩子的班級'.bear_image' –

+0

嘗試'console.log(貓);'首先看看你的選擇器是否得到任何元素 –

+0

事情是,divs不相關他們是單擊時單擊我必須在其他div中進行操作。 – user2204367

回答

0

$.on()函數內你$(this)變化範圍:

嘗試:

$ = jQuery; 

$(document).ready(function(){ 
    //var cat = $(".bear_image").children("img").attr("alt"); 
    var abs = $("li"); 
    abs.on("click", ".first", function(){ 
     var cat = $(this).closest('li').children(".bear_image img"); 
     console.log(cat); 
    }); 
}); 
+0

abs可能是LI的列表,所以如果你使用'abs。孩子',你不會知道你會以哪一個「.bear_image img」結尾! –

+0

謝謝,現在修復 –

0

您的代碼中的以下表達式意味着您正在委託'.first'中的'li'容器內的點擊處理程序。

var abs = $("li"); 
$(abs).on("click", ".first", function(){ 

first沒有bear_image有一個子類。

您需要使用closest函數跳轉到類bear-image的元素,然後找到img元素。

var abs = $("li"); 
    $(abs).on("click", ".first", function(){ 
      var cat = $(this).closest('.bear_image').find("img"); 
      console.log(cat.attr("alt")); 
     }); 
0

this在onclick閉合功能是.first股利。此div不包含任何類.bear_image的元素。

如果您從選擇器中刪除.bear_image,它應該在.first div中找到img

$ = jQuery; 

$(document).ready(function(){ 
    //var cat = $(".bear_image").children("img").attr("alt"); 
    var abs = $("li"); 
    $(abs).on("click", ".first", function(){ 
     var cat = $(this).children("img"); 
     console.log(cat.attr("alt")); 
    }); 
}); 
1

你可以做這樣的事情......

點擊後,遍歷父li然後找到.bear_image

$(abs).on("click", ".first", function(){ 
    var cat = $(this).parents('li').find('.bear_image').attr('alt'); 
}); 
2

.bear_img不是.first一個孩子,所以你必須做一點點遍歷:

var abs = $("li"); 
$(abs).on("click", ".first", function() { 
    var cat = $(this).closest(abs).find(".bear_image img"); 
    console.log(cat.attr("alt")); 
}); 

在這裏我找到最接近的列表元素祖先,然後找到.bear_image祖先的孩子。

demo(與PHP代碼刪除)顯示了這是如何工作的。