$(this).attr('img')返回null或[object Object]而不是值

时间:2012-12-14 08:11:57

标签: jquery

这是我的问题。我正在我的网站上创建自己的图像弹出窗口。

这是弹出窗口之前的脚本

<script> clicked = $('#gatb-1').click(function() { 
  return this.getAttribute('imid') }); </script>

*注意:点击是全局变量

这是图片代码:

<?php foreach ($the_picture as $picture) : ?>
<a id="gatb-1" imid="http://somesite.com/img/image.jpg" class="glr">
<div class="picture">
<img src="http://somesite.com/img/image.jpg" width="340px">
</div>
</a>
<?php endforeach; ?>
然后弹出代码在图片代码下方调用,这是弹出窗口时显示的脚本:block

这是弹出式div:

<div class="popup">
<script>
$(document).ready(function() { 
    $('#thmg').attr('src', clicked); }); 
</script>
<table>
<tr>
<td>left link</td>
<td><div class="picts"><img id="thmg" src="target here"></div></td>
<td>Right link</td>
</table>
</div>

我在弹出窗口之前也尝试过这段代码,但它是一样的。总是返回[object Object]或返回null

$(this).attr('imid')

结果如下:

<img src="[object object]">

那么,我该如何传递属性?或者我做错了什么?

4 个答案:

答案 0 :(得分:0)

适合我...

var img = $("#gatb-1").attr('img');
$("#thmg").attr('src', img);

http://jsfiddle.net/chovy/Srx55/

答案 1 :(得分:0)

我认为您将$('#gatb-1')分配给clicked而不是img属性。如果您要使用该代码(我不鼓励它),$('#thmg').attr('src', clicked.attr('img'))可能会起作用

答案 2 :(得分:0)

尝试替换

<script> clicked = $('#gatb-1').click(function() { 
 return this.getAttribute('img') }); </script>

 <script> $('#gatb-1').click(function() { 
 clicked = $(this).attr('img') }); </script>

答案 3 :(得分:0)

我找到了它!它不是关于虚假代码或任何东西。 它只是因为<script></script>是不同的全局。因为我在1个档案中的两个地方都有<script></script>

<script> 
 clicked = $('#gatb-1').click(function() { 
  return this.getAttribute('imid') }); 
</script>

然后访问另一个<script></script>中的变量,使其不起作用。

<script>
$(document).ready( function() {
       $('#thmg').attr('src', clicked);
});
</script>

所以,解决方案是,将所有JQuery合并到一个<script></script>中。

<script>
$(document).ready( function(){
   $('#gatb-1').click( function(){
    var clicked = $(this).attr('imid');
    $('#thmg').attr('src', clicked);
});
});
</script>