在jquery中混合$(this)值

时间:2011-06-23 19:27:50

标签: javascript jquery html css

如果我使用$(this),如何防止在jquery中混合值?例如:

1: <input type="text" id="in1" class="test"> <br />
2: <input type="text" id="in2" class="test"> <br />

<div id="ppp"> <p class="show" id="one">onevalue</p> <p class="show" id="two">twovalue</p></div>

#ppp {
    display: none;
}

$(".click").click(function(e) {

    $("#block").show();

    var current = $(this);

    $(".show").click(function(e) {
        current.val($(this).attr("id"));
    });
});

实例 - http://jsfiddle.net/VmXU9/59/

如果我点击1输入显示“onevalue”和“twovalue”。如果我点击“onevalue”或“twovalue”,则在1个输入中出现id为“onevalue”或“twovalue”。这很好,但如果我另外点击2输入并选择“onevalue”或“twovalue”,则“onevalue”或“twovalue”的ID出现在1输入和2输入中。应该只有一个 - 在最后点击。我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:1)

每次单击输入时,您都绑定$(".show").click(),导致它重复。确保先解开绑定:

$(".show").unbind('click').click(function(e) {
 //etc
});

答案 1 :(得分:0)

如果我理解你要做的事情,你需要:

  1. 移动current
  2. 的范围
  3. input.show元素上点击事件的绑定移动到点击input.click元素之外:
  4. 演示: http://jsfiddle.net/JAAulde/VmXU9/65/

    理想情况下,您要关闭所有这一切的范围,以避免将current作为全局引入,并且在操作之前检查current是否已从其初始设置更改:< / p>

    演示: http://jsfiddle.net/JAAulde/VmXU9/66/

答案 2 :(得分:0)

你必须取消绑定.show的点击。 添加:

$('.show').unbind('click');

如链接到下面的示例

实例 - http://jsfiddle.net/VmXU9/62/