【问题标题】:CakePHP, jQuery - Add data attribute to anchorCakePHP,jQuery - 将数据属性添加到锚点
【发布时间】:2017-03-16 08:11:36
【问题描述】:

我正在寻找一种将数据属性插入到 CakePHP 中的表锚点的方法。它会自动生成以下代码,但我不知道如何更改它以使其成为数据目标属性。

我想要实现这一点的原因是因为我链接到同一页面上的不同 div 并且想要防止页面重新加载。我是否必须从 jQuery 插入 preventDefault()?如果是这样,该怎么做?

这是我当前的代码:

<?php foreach ($servers as $server): ?>
  <tr>
     <td><?= $this->Number->format($server->id) ?></td>
     <td><?= h($server->url) ?></td>
     <td><?= h($server->description) ?></td>
     <td><?= h($server->Timestamp) ?></td>
     <td class="actions">
         <?= $this->Html->link('View', array('#' => 'admin-view-' . $server->id)) ?>
         <?= $this->Html->link('Edit', array('#' => 'admin-edit-' . $server->id)) ?>
     </td>
   </tr>
<?php endforeach; ?>

这是我正在寻找的结果;它必须使用 CakePHP 约定来完成(不要介意列表项):

<a data-target="admin-edit">Edit</a>
<a data-target="admin-view">View</a>

【问题讨论】:

    标签: php jquery cakephp attributes


    【解决方案1】:

    你试过了吗:-

    <?= $this->Html->link('View',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-view");?>
    <?= $this->Html->link('Edit',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-edit");?>
    

    为防止页面重新加载,请使用href="javascript:void(0);" 创建一个链接,如下所示:-

    <?= $this->Html->link('View','javascript:void(0);',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-view");?>
    <?= $this->Html->link('Edit','javascript:void(0);',array('#' => 'admin-view-' . $server->id,'data-target'=>"admin-edit");?>
    

    如果你想通过 jQuery 来阻止(不是用上面的代码)那么:-

    $('link').click(function(e){
       e.preventDefault();
       //rest your code
    });
    

    注意:- 请确保在此代码之前添加 jQuery 库,并且此代码必须位于页面底部。

    【讨论】:

    • 谢谢!由于它仍然是一个锚点,你知道如何防止点击锚点后页面重新加载吗(最好使用 jQuery)?
    • @Levano 是的,请检查答案。很高兴为您提供帮助:)
    【解决方案2】:

    这里是关于 CakePHP HtmlHelper link 方法的详细信息

    CakePHP link 方法接受 3 个参数作为其参数。

    • 标题 [字符串]
    • 网址   [字符串或数组]
    • 选项/属性 [数组]

    语法:

     $this->Html->link($title, $url = null, array $options = []);
    

    示例:

    echo $this->Html->link(
       'Title',
       '/path/to/url', #OR ['controller'=>'','action'=>'','others']
       [
         'class' => 'button',
         'target' => '_blank',
         'data-url'=>'#',
         'data-path'=>'',
         /*Other attributes*/
       ]
    );
    

    这里是Creating Links in CakePHP的详细信息

    对于您的问题,如果&lt;a&gt;标签中不需要href='',那么您可以使用button或其他标签代替&lt;a&gt;标签。

    【讨论】:

    • 详情+1
    • 谢谢! :) +1 也@AlivetoDie
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 2014-08-08
    相关资源
    最近更新 更多