2014-12-18 25 views
3

例如,有这样的JS代码:如何在点击时获取所需的输入值?

功能openAlbum(){ $( “#轨道”)HTML( '一些文本......'); var uid = $(“#uid”)。val();

$.ajax({ 
      type: "POST", 
      url: "s.php", 
      data: "uid="+uid, 
      success: function(html) { 
        $("#results").empty(); 
        $("#results").append(html); 
      } 
    }); } 

和被显示在一个周期此HTML/PHP的代码:

for ($i = 0; $i < count($searchAlbum); $i++) { 
echo '<div id="cover"><form action=""><input type="hidden" id="uid" value="'.str_replace('https://example.com/', '', $searchAlbum[$i]->href).'"/><a href="#" onclick="openAlbum();"><img src="'.$searchAlbum[$i]->images[1]->url.'"/></a><br><br><span>'.$searchAlbum[$i]->name.'</span><input type="submit" style="position: absolute;;left: -99999px;" /></form></div>'; 
} 

问题:目前通过点击抓斗仅id为页面上的第一输入值=” UID”。

如何从div中点击一个链接的JS var uid值?

P.S.对不起,我的英语不好。

+1

'id's必须是唯一的。这可能是问题的一部分。 – imtheman

+0

最好不要使用onclick,而是添加一个事件侦听器,该事件侦听器将在单击封面div的任何实例时触发。然后你可以用'this'来获得价值。 – Collierre

+0

我不完全明白你想要做什么,所以我目前没有完全支持这些表格,但我会信任你!看看我给它的答案应该给你一点。 –

回答

1

我会改变你还挺这样做有点的方式......

<?php 
    for ($i = 0; $i < count($searchAlbum); $i++) { 
?> 
     <div class="cover"> 
       <form action=""> 
        <input type="hidden" class="uid" value="<?php echo str_replace('https://example.com/', '', $searchAlbum[$i]->href); ?>"/> 
        <img src="<?php echo $searchAlbum[$i]->images[1]->url; ?>"/> 
        <span><?php echo $searchAlbum[$i]->name; ?></span> 
        <input type="submit" style="position: absolute;left: -99999px;" /> 
       </form> 
     </div>'; 
<?php 
    } 
?> 

脚本:

$(document).on('click','.cover img',openAlbum); 
function openAlbum() { 
    $("#tracks").html('Some text...'); var uid = $(this).parent().find('.uid').val(); 

    $.ajax({ 
      type: "POST", 
      url: "s.php", 
      data: "uid="+uid, 
      success: function(html) { 
        //$("#results").empty(); 
        //$("#results").append(html); 
         $("#results").html(html); 
      } 
    }); 
} 

这应该面面俱到。我将所有的ids切换到类,并改变了你如何执行你的jQuery。

+0

让我知道如果偶然的功能不起作用。除非您在多个地方使用该功能,否则以这种方式使用它是有点浪费的。我真的将它创建为'$(document)。(...,...,function(){...});' –

+0

非常感谢! 这部分解决了我的问题,但同时又有新的。 点击后,我们将数据发送到页面s.php,处理它们并显示在div中 - 此div可以任意刷新。最多几次:( – Kruazzan

+0

@Kruazzan你可以更具体一点,我改变了'#results'(假设)div内容被替换的部分,看看[html()](http://api.jquery。 com/html /) –

0

谢谢大家的帮忙!因此,我将能够解决这个问题。

JS代码:

function openAlbum(uid) 
{ 
$("#results").html('Some text...'); 

     $.ajax({ 
       type: "POST", 
       url: "s.php", 
       data: "uid="+uid, 
       success: function(html) { 
         $("#results").empty(); 
         $("#results").append(html); 
       } 
     }); 

} 

HTML代码:

for ($i = 0; $i < count($searchAlbum); $i++) { 
?> 
<div id="cover"><a href="#" onclick='openAlbum("<? echo $searchAlbum[$i]->id; ?>");'><img src="<? echo $searchAlbum[$i]->images[1]->url; ?>"/></a><br><br><span><? echo $searchAlbum[$i]->name; ?></span></div> 
<? 
} 
+0

好吧,看起来你在这里添加了一个更有意义的答案,在这种情况下,只需要删除第一个'.html'就没有必要了,你真的只想在'success'中改变它大多数情况下,或者你可以添加一个失败子句,但是这看起来总体上很好,如果你期望它们重复,STILL应该把你的ID改为类。应该让它成为一个班级。 –

0

由于ID在HTML中必须是唯一的,它是只取第一个元素的值。如Cayce K已回答的,使ID为唯一或使用class属性。

相关问题