2012-02-11 3 views
1

Вот HTML разметка 2 строки из моего огромного стола (который, порожденных PHP и прикладной DataTables после этого)Создание всей строки таблицы связываемых с JQuery вопрос

<tr url="?page=item&id=850"> 

    <td class="item_id"><input type="checkbox" name="checkbox[]" method="post" value="850" class="checkbox"/> 850</td> 

    <td> 9007</td> 

    <td style="text-align:center">BK</td> 

    <td style="text-align:center">41</td> 

    <td style="text-align:center" id="qt">1</td> 

    <td style="text-align:center">7</td> 

    <td style="text-align:center">11</td> 

    <td>09.02.2012</td> 

</tr> 

А вот второй ряд

<tr url="?page=item&id=587"> 

    <td class="item_id"><input type="checkbox" name="checkbox[]" method="post" value="587" class="checkbox"/> 587</td> 

    <td> 779-59</td> 

    <td style="text-align:center">BR</td> 

    <td style="text-align:center">37</td> 

    <td style="text-align:center" id="qt">2</td> 

    <td style="text-align:center">15</td> 

    <td style="text-align:center">14</td> 

    <td>08.02.2012</td> 

</tr> 

Функция ниже работает для 90% строк. Я действительно не знаю, почему этот скрипт работает во второй строке из примеров, но ничего не делает для первой строки. Эти два ряда почти одинаковы.

$("td").not('.item_id').click(function(){ 
    window.open ($(this).closest("tr").attr("url")); 
}); 

Как вы думаете, что может вызвать эту проблему?

+0

Вы можете настроить jsfiddle.net? – Richard

ответ

1

Вместо этого используйте это, которое будет прикреплять обработчик click на tr и игнорировать, если щелкнуть по checkbox или его ячейке. Попробуй это.

$("tr").click(function(){ 
    window.open($(this).attr("url")); 
}); 

$("td.item_id").click(function(e){ 
    e.stopPropagation(); 
}); 

Alertnatively вы также можете использовать event.target, чтобы проверить, если это checkbox не делать ничего этого.

$("tr").click(function(e){ 
    if(!$(e.target).is(':checkbox') && !$(e.target).is('.item_id')){ 
     window.open($(this).attr("url")); 
    } 
}); 
+0

thx, но такой же результат. ничего не изменилось – heron

+0

Вы пробовали оба подхода? – ShankarSangoli

+0

- это действительная разметка атрибута url? Возможно, вы столкнулись с проблемами, потому что jquery работает лучше всего с допустимым HTML – shanabus

0

Я понимаю, этот кусок:

$("td").not('.item_id').click(function(){ 
    ... 
}); 

Но может эта часть будет обновлена ​​работать лучше?

window.open ($(this).closest("tr").attr("url")); 

Кроме того, имеет ли свойство url? Вы можете использовать атрибуты данных для более предсказуемого опыта. Может быть, это будет работать лучше:

<tr data-url=""> 
    ... 
</tr> 

с вашим открытым окном, даже так:

window.open($(this).parent().attr("data-url")); 

Смотрите пример: http://jsfiddle.net/Zuhrx/

+2

'$ (this) .parent(). Data (" url "));' – Richard

+0

Спасибо @ Richard, еще лучше! – shanabus

0

его рабочим HERE что-то еще не так. Вы завершаете код в обработчике ready?

+0

есть. он готов. присоединяйтесь к обсуждению http://chat.stackoverflow.com/rooms/7566/jquery-issue – heron

Смежные вопросы