0

我想用 1 个输入或选择和 1 个选择字段克隆一行。取决于第一个选择的值,它应该将第二个更改为输入或选择字段。它适用于父母,但不适用于克隆。

    jQuery("body").delegate("p", "click", function(){
        var $tr    = jQuery(this).closest('.tr_clone');
        var $clone = $tr.clone();
        $tr.after($clone);
    });
    jQuery('.art_der_fahrt').hide();
    jQuery('.wert_input').show();
    jQuery(".fahrtenbuch_aenderungen").change(function() {
                if(jQuery(this).val() == '52') {
                    jQuery(this).parent('td').next('td').children(".art_der_fahrt").show();
                    jQuery(this).parent('td').next('td').children('.wert_input').hide();
                }
                else {
                    jQuery(this).parent('td').next('td').children(".art_der_fahrt").hide();
                    jQuery(this).parent('td').next('td').children('.wert_input').show();
                }

            });

<td>
    <select class="fahrtenbuch_aenderungen" name="fahrtenbuch_aenderungen">
      <option></option>
      <option value="24">Fahrtziel</option>
      <option value="23">Besuchte Personen / Firmen / Objekte</option>
      <option value="3">Fahrer</option>
      <option value="52">Art der Fahrt</option>
      <option value="14">Fahrzeugstandort</option>
      <option value="111">Fahrtzweck</option>
    </select>
</td>
<td>
    <input value="" class="wert_input" name="wert" type="text">
    <span class="art_der_fahrt">
        <select tabindex="111" class="test" name="select">
            <option></option>
            <option value="Dienstfahrt">Dienstfahrt</option>
            <option selected="selected" value="Wohnung">Wohnung</option>
            <option value="Bereitschaft">Bereitschaft</option>
            <option value="3">Fahrer</option>
            <option value="52">Privatfahrt</option>
            <option value="Familienheimfahrt">Familienheimfahrt</option>
        </select>
    </span>

</td>
<td colspan="2">
<p>Click me!</p>
</td>
4

3 回答 3

2

采用.on

jQuery(document).on("click", "p", function(){

jQuery(".fahrtenbuch_aenderungen").on('change',(function() {

因为 .on 已经替换了.liveand.bind.delegate。并且 .on 也比其他更快.. http://jsperf.com/bind-vs-live-vs-delegate-vs-on/5

于 2013-02-28T09:39:51.803 回答
1

您正在绑定更改侦听器 –</p>

jQuery(".fahrtenbuch_aenderungen").change(function() {

– 在只有一个select元素的时候。只有那个元素会有监听器。您还需要在这里使用委托:

jQuery("body").delegate(".fahrtenbuch_aenderungen", "change", function() {

在这里使用.delegate,从某种意义上说,你已经在自己的帖子中使用了它,假设是旧版本的 jQuery。正如其他人指出的那样,您应该更喜欢.on它是否可用。

演示

于 2013-02-28T09:50:38.623 回答
-1

使用以下

$("td > p").on("click", function(){
    // your code here
});

"on" 可以将事件绑定到动态生成的 dom

于 2013-02-28T09:42:19.643 回答