3

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

这是弹出窗口之前的脚本

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

*注意:clicked是全局变量

这是图片代码:

<?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

4 回答 4

0

为我工作...

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

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

于 2012-12-14T08:18:21.160 回答
0

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

于 2012-12-14T08:28:14.533 回答
0

尝试更换

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

 <script> $('#gatb-1').click(function() { 
 clicked = $(this).attr('img') }); </script>
于 2012-12-14T08:28:46.377 回答
0

我找到了!它与错误代码或任何东西无关。只是因为<script></script>全球不同。这是因为我<script></script>在 1 个文件中有两个地方。

<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>
于 2013-01-30T08:06:11.983 回答