行がクリックされると、その行のテキストボックスとボタンが表示され、そのラベルが非表示になるテーブルがあります。最後の列に、正常に機能するために必要なリンクを追加しましたが、行が「編集」モードになることはありませんが、リンク自体がクリックされた場合に限ります。
行のコードは次のとおりです。
<tr class="viewEditRow rowBorder" style="cursor: pointer;">
<td class="deleteBranch">
<input type="checkbox" class="chkDeleteBranch" name="deleteBranches[]" value="1"><br>
<input type="submit" class="cancelListEditBranch edit hideOnLoad" value="Cancel" title="Cancel editing this branch"><br>
<input type="submit" class="submitListEditBranch edit hideOnLoad" value="Save" title="Save the changes">
</td>
<td class="viewEditBranchName">
<label class="viewBranchName detailDisplay">Atlanta</label>
<input type="text" class="edit editBox editName hideOnLoad" value="Atlanta"><br>
<br>
<label id="lblBranchesListEditError" class="errorMsg"></label>
</td>
<td class="viewEditBranchUrl">
<label class="viewBranchUrl detailDisplay"><a href="http://whub32.webhostinghub.com/~forsyt11/index.php/coverage-area/georgia" class="branchDetailLink" title="Click to go the branch's web page">georgia</a></label>
<input type="text" class="edit editBox editUrl hideOnLoad" value="georgia">
</td>
</tr>
このコードは、その行がクリックされたときにラベルを非表示にし、テキストボックスとボタンを表示します。
$('#tblViewEditAllBranches').on('click', 'tr', function(e) {
$(this).find('td').each(function() {
$(this).find('.editBox').val($(this).find('.detailDisplay').text());
});
// Hide edit elements in other rows and labels in clicked row
$('#tblViewEditAllBranches tr').not(this).find('.edit').fadeOut(200);
$('label', this).fadeOut(200);
// Show labels in other rows and edit elements in clicked row
$('#tblViewEditAllBranches tr').not(this).find('label').delay(200).fadeIn(200);
$('.edit', this).delay(200).fadeIn(200);
e.stopPropagation();
});
現在起こっていることは、最後の列のリンクがクリックされると、行が「編集」モードになり、ブラウザがクリックされたURLをロードすることです。
リンクが機能するようにする必要がありますが、リンク(およびリンクのみ)をクリックすると、行は編集モードにならず、URLが読み込まれます。
これを達成するために次のコードを試しましたが、最も近いのはreturn falseを使用したときでした。これは、URLに従わなかったため、実際には「近い」わけではありませんでしたが、行は移動しました。編集モードになります。e.preventDefaultとe.stopPropagationはどちらも効果がないようです。
$('#tblViewEditAllBranches tr').find('label.viewBranchUrl').on('click', 'a.branchDetailLink', function(e) {
e.preventDefault;
});