我有一個有趣的情況 - 我有一個表格行,當我單擊「展開」按鈕時,顯示它是隱藏的對應表格。包含展開按鈕的原始(未隱藏)行也在某個單元格中包含一些內容,點擊該單元格後,該內容即可編輯。我想擺脫擴展按鈕,並通過雙擊該行本身中的任何位置來啓用行的擴展,包括單擊時可以編輯的字段。你可以在這裏聞到麻煩。使用jQuery的Javascript:單擊並雙擊相同的元素,不同的效果,一個禁用另一個
當我雙擊一行時,在發生dblclick之前,首先會觸發兩個單擊事件。這意味着如果我雙擊該字段,它將變成可編輯的字段,並且該行將擴展。我想阻止這一點。我想要雙擊來防止單擊發生,單擊單擊以執行。
使用event.stopPropagation()顯然不起作用,因爲它們是兩個不同的事件。
任何想法?
編輯(一些半僞代碼):
原始版本:
<table>
<tbody>
<tr>
<td><a href="javascript:$('#row_to_expand').toggle();" title="Expand the hidden row">Expand Row</a></td>
<td>Some kind of random data</td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[0]->value("First editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[1]->value("Second editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[2]->value("Third editable value") ?></td>
<!-- ... -->
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[n]->value("Nth editable value") ?></td>
</tr>
<tr style="display: none" id="row_to_expand">
<td colspan="n">Some hidden data</td>
</tr>
</tbody>
</table>
所需的版本:
<table>
<tbody>
<tr ondblclick="$('#row_to_expand').toggle()">
<td>Some kind of random data</td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[0]->value("First editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[1]->value("Second editable value") ?></td>
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[2]->value("Third editable value") ?></td>
<!-- ... -->
<td><?= $editable_cell_which_turns_into_an_input_field_on_single_click[n]->value("Nth editable value") ?></td>
</tr>
<tr style="display: none" id="row_to_expand">
<td colspan="n">Some hidden data</td>
</tr>
</tbody>
</table>
乾杯
粘貼一些代碼,請 – diEcho 2011-03-29 10:49:32
你可以嘗試使用的setTimeout延遲的點擊處理程序,然後雙擊養「通過DoubleClick已經-發生」標誌,並在你的單,即可查看該旗處理者 – 2011-03-29 10:55:03
@diEcho完成! @freaktm謝謝,我考慮到了這一點,但它似乎不切實際和hackish,特別是因爲我將不得不修改我的可編輯單元助手網站的點擊處理程序。我可能會將此作爲最後的手段,是的,但仍想知道某人是否有更好的解決方案。 – Swader 2011-03-29 11:03:59