1

Troubles getting this value: .data("blog-title") on hover of .avatar in this kind of code:

<a target="_blank" href="http://somwhere.com/"  class="frame">
<img alt="" class="avatar" src="http://something.com/pong.png/>
        </a>
        <script type="text/javascript">
            some script stuff
        </script>

            <div class="note">
                        <a target="_blank" class="preview" href="http://something.com/blogpost/bar"><img src="http://http://something.com/some.gif" /></a>
                <a href="#" data-blog-title="fooname" class="block">foobar</a>
            </div>

Have tried various parent, finds, and etcetera. Just can't solve it.

4

5 回答 5

2

尝试这个:-

假设您有多个这样的部分,您可以尝试这种方式

$('.avatar').hover(function(){
var value = $(this)
          .closest('.frame') // Get to the parent .frame
          .siblings('.note') // look for its sibling .note
          .find('.block') //find the anchor with class.block
          .data('blog-title'); //get the value. If this attribute value is being changed dynamically after the load then you need to use .attr('data-blog-title')

});

否则就做

 $('.block').data('blog-title');

http://jsfiddle.net/kNntX/

记得在这里关闭引号

<img alt="" class="avatar" src="http://something.com/pong.png/">
                                                              ^----------
于 2013-06-05T01:19:16.173 回答
1

像这样的东西应该使用data

$(".avatar").hover(function(e){
    alert($('.block').data('blog-title'));
}, function() {

});

http://api.jquery.com/data/#data-html5

于 2013-06-05T01:19:32.457 回答
1

这应该有效吗?(jsfiddle

$(function() {
   $(".avatar").mouseover(function() {
     console.log($(".block").data('blog-title'));  
   });
});
于 2013-06-05T01:20:13.480 回答
1

首先,我建议您将所有<script>标签保存在 HTML 文件中的一个位置,这样可以提高可读性,并更容易查看触发的内容及其发生的顺序。

话虽如此,您可能希望执行如下代码:

请记住,在您当前的 HTML 代码中,您所追求的元素被称为.block

 <script>
       //wait for the document to be ready before triggering
       $(document).ready(function(){
           $('.avatar').hover(function(){
               var title =  $(this).next('.note').children('.block').attr("data-blog-title");
               //do something with title now that you've loaded it.
              },
           //callback
           function(){ 
             //something else on mouseout
           });
});
</script>

请注意,我没有对此进行测试,但经过一些调试,这应该可以工作。

于 2013-06-05T01:22:06.673 回答
1

尝试

$(function() {
   $(".avatar").mouseenter(function() {
     var blogTitle = $(this).closest('.frame').find('.block').data('blogTitle');
     console.log(blogTitle );  
   });
});
于 2013-06-05T01:24:36.850 回答