JQuery点击事件仅起作用一次

4

我的页面中有一个表格,每一行都有两个链接标签。我希望通过点击第一个链接来调用第二个链接,因为我想从第一个链接中获取一些参数并添加到第二个链接的href中。而第二个链接会在一个colorbox元素中打开。

这两个链接的标签为 <a>。

<a id="linkToHiddenATag" href=" '#'.<?php echo $row['employee_id'];?>/<?php echo$row['supervisor_id'];?>" title="Product Operation List">Click for production entry</a>

<a class ="add cboxElement" href="#" id="hiddenATag" ></a> 

完整的表格如下:
HTML
                    <div id="searchPanel">
                        <table id="searchTable" class="dataTable">
                            <thead>
                                <tr>
                                    <th style="text-align: left; width: 8%;">SL</th>
                                    <th style="text-align: left; width: 12%;">Employee Code</th>
                                    <th style="text-align: left; width: 12%;">Employee Name</th>
                                    <th style="text-align: left; width: 12%;">Designation</th>
                                    <th style="text-align: left; width: 10%;">Entry Date</th>                                        
                                    <th style="text-align: left; width: 36%;">Entry</th>
                                    <th style="text-align: center; width: 10%;">D'active</th>                                                                                
                                </tr>
                             </thead>
                             <tbody>
                                    <?php $loopCount = 1; if(isset($employeeData)){ foreach ($employeeData as $key => $row):?>
                                    <tr id="tr_<?php echo $row['employee_id']; ?>">

                                        <td style="text-align:center;"><input type="text" class="supervisorwiseSerial" id="supervisorwiseSerial_<?php echo $row['employee_id'];?>" name="supervisorwiseSerial_<?php echo $row['employee_id'];?>" value="<?php echo $row['supervisorwise_serial'] ;?>"></td>
                                        <td><?php echo $row['employee_pre_code']."-".$row['employee_code'];?></td>
                                        <td><?php echo $row['employee_name'];?></td>
                                        <td><?php echo $row['designation_name'];?></td>
                                        <td style="text-align: center;">
                                            <input style="width: 80px;" type="text" placeholder="dd.mm.yyyy" class="dateOfProduction_" name="dateOfProduction_" id="dateOfProduction_<?php echo $row['employee_id']; ?>" required />

                                            </td>
                                            <td style="text-align: center;"><a class="btn btn-success btn-xs" id="setSerial_<?php echo $row['employee_id'];?>" role="button" href="#" >Set serial </a>   || <a id="linkToHiddenATag" href="<?php echo '#'.base_url();?>production_entry/showOperationList/<?php echo $row['employee_id'];?>/<?php echo$row['supervisor_id'];?>" title="Product Operation List">Click for production entry</a></td>                                        

                                        <td  style="text-align:center"><a class="btn btn-warning btn-xs" id="deActiveEmployee" href="<?php echo base_url().'employee'.'/'.'#'.'editOrDeactivate'.$row['employee_id'];?>" target="_blank">D'active Emp</a></td>
                                        <input type="hidden" id="employeeId" value="<?php echo $row['employee_id']; ?>">
                                        <input type="hidden" id="unit_<?php echo $row['employee_id']; ?>" value="<?php echo $row['unit_id']; ?>">
                                        <input type="hidden" id="floor_<?php echo $row['employee_id']; ?>" value="<?php echo $row['floor_id']; ?>">
                                        <input type="hidden" id="section_<?php echo $row['employee_id']; ?>" value="<?php echo $row['section_id']; ?>">
                                        <input type="hidden" id="subsection_<?php echo $row['employee_id']; ?>" value="<?php echo $row['subsection_id']; ?>">
                                        <input type="hidden" id="incharge_<?php echo $row['employee_id']; ?>" value="<?php echo $row['incharge_id']; ?>">
                                    </tr>
                                    <?php $loopCount++; endforeach;}?>
                             </tbody>    
                        </table>                            
                    </div>
                    <div class="panel-footer" style="text-align: right;" id="searchPanelFooter">
                     <a  id="saveAll" name="saveAll" class="btn btn-success btn-md" role="button" href="#">Save All</a>
                     <a class ="add cboxElement" href="#" id="hiddenATag" ></a> 
                    </div>

Javascript:

$(document).on('click', 'a#linkToHiddenATag', function() {

    var url = $(this).attr("href");
    var arrfor = url.split('/');
    var lengthto = arrfor.length;
    var employeeSysIdForOpList = arrfor[lengthto - 2];
    var supervisorIdForOpList = arrfor[lengthto - 1];

    var prodOpGrp = parseInt($('select#operationGroupSelect').val());

    var newhref = '';
    if ($.isNumeric(prodOpGrp)) {
        newhref = '<?php echo base_url().'
        production_entry / showOperationList / ';?>' + employeeSysIdForOpList + '/' + supervisorIdForOpList + '/' + prodOpGrp;

    } else {
        newhref = '<?php echo base_url().'
        production_entry / showOperationList / ';?>' + employeeSysIdForOpList + '/' + supervisorIdForOpList;
    }



    $('a#hiddenATag').removeProp("href");
    $('a#hiddenATag').prop("href", newhref);

    $('a#hiddenATag').click();

});

问题在于点击事件只能触发一次,之后就再也无法触发。我无法检测到问题所在。如果有人能提供帮助将非常有益。

为什么我看到 php 代码 <?php echo base_url()? 它实际上是一个 php 文件,你在里面编写 js 吗? - Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ
在视图页面中的脚本标签内编写代码。 - Hafsul Maru
Keval Bhatt,测试 - Hafsul Maru
你没有提供一个示例表格,但请确保在表格中的锚点元素没有相同的Id属性。 - jyrkim
@Keval Bhatt production_entry 是类名,showOperationList 是该类的方法。 - Hafsul Maru
显示剩余2条评论
3个回答

2

我尝试使用你的例子,它可以工作。我为了测试,从例子中删除了href。

问题:


1)当我运行你的代码时,它显示production_entry未定义

2)字符串拼接是错误的,如果在新行上,应该像这样使用+。

 newhref = '<?php echo base_url().'+
           production_entry +'/'+ showOperationList +'/'+ ';?>' 

$(document).on('click', 'a#linkToHiddenATag', function() {

       var url = $(this).attr("href");
       var arrfor = url.split('/');
       var lengthto = arrfor.length;
       var employeeSysIdForOpList = arrfor[lengthto - 2];
       var supervisorIdForOpList = arrfor[lengthto - 1];
       $('body').append('clicked')
       console.log("clicked")
       $('a#hiddenATag').click();

 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="linkToHiddenATag" href="#" title="Product Operation List">Click for production entry</a>
<a class="add cboxElement" href="" id="hiddenATag" onClick="console.log('ss')"></a>


我确实触发了点击事件,但只有一次。 - Hafsul Maru
@HafsulMaru,你是在谈论内部点击吗? - Keval Bhatt
现在看到我更新了代码片段,我在a标签中添加了onclick事件,它将给我控制台并运行示例。 - Keval Bhatt

0

试试这个

$('#linkToHiddenATag').on('click',function(){
      */ Write your code */
});

0

我认为你应该使用$('a#hiddenATag').trigger('click');而不是$('a#hiddenATag').click();


我认为,在这种情况下这并不重要。 - Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接