根据元素更改HREF链接"值"在jquery

时间:2015-05-31 18:55:22

标签: php jquery mysql

我有以下PHP从我的MYSQL表中返回记录。这些记录显示为LINKS。请参阅下面的代码......

        <div class="slide1" id="u1026">

        <?php while ($row = mysql_fetch_array($query_rental)) {
        echo "<a class='fancybox fancybox.iframe' id='rental' value={$row['layout']} href=\"brochures\items-rental.php?id={$row['client_name']}\"></a>"; 
        }?>                 

        </div>

我想要的是将HREF链接更改为

  

\&#34;小册子\项租赁-layout2.php ID = {$行[&#39; CLIENT_NAME&#39;]} \

如果VALUE包含文字&#34; layout2&#34;。我知道我可以使用jquery代码更改HREF

$(document).ready(function () {  
  $("#event").attr("href", "http://the.new.url")
});

我根本不确定怎么做,取决于VALUE是否包含文字&#34; layout2&#34;。任何帮助深表感谢。感谢

2 个答案:

答案 0 :(得分:2)

您可以直接在PHP代码中执行此操作:

while ($row = mysql_fetch_array($query_rental)) {
  $layoutFlag = $row['layout'] == 'layout2' ? '-layout2' : '';
  echo "<a class='fancybox fancybox.iframe' id='rental' value=\"{$row['layout']}\" href=\"brochures\items-rental{$layoutFlag}.php?id={$row['client_name']}\"></a>"; 
}

您也可以使用Javascript:

$(function () {
  // I'm assuming you are going to turn it into a rental class, otherwise change the selector to whatever.
  $("a.rental").each(function() {
    var rentalItem = $(this);
    if (rentalItem.attr('value') === 'layout2') {
      // You can choose what to replace, as long as you know it will replace EXACTLY what you want it to. I'm just going with Regex's ^ (start-of-line) operator to make sure that what we are replacing is at the start of the line...
      rentalItem.attr('href', rentalItem.attr('href').replace(/^brochures\\items\-rental/, 'brochures\\items-rental-layout2'));
  });
});

正如您所看到的,只需在PHP中执行它就容易多了。

另外,作为旁注,您要创建具有相同id的多个元素。也许你的意思是class='fancybox fancybox.iframe rental'

作为第二方,我建议使用data-前缀来保存自定义数据。在布局的情况下,请使用data-layout='layout-whatever'。然后,您可以使用.attr('data-layout')获取布局属性(它更容易理解代码的作用!)。

答案 1 :(得分:1)

您可以在IF循环

上运行PHP语句
while ($row = mysql_fetch_array($query_rental)) {
    echo "<a class='fancybox fancybox.iframe' id='rental' value={$row['layout']} href=\"brochures\items-rental".($row['layout'] == 'layout2' ? '-layout2' : '').".php?id={$row['client_name']}\"></a>"; 
} 

或者通过jQuery

$( "a.fancybox" ).each(function( index ) {
    if($(this).val() == "layout2") {
       oldHref = $(this).attr('href');
       newHref = oldHref.replace('items-rental.php', 'items-rental-layout2.php')
       $(this).attr('href', newHref);
    }
});
  • 您的所有链接都具有相同的ID,当您想要使用jQuery时,这些ID可能会导致一些问题。

  • 如果你有更多带有fancybox类的标签,请尝试为这些标签添加一个唯一的类并更新每个循环

相关问题