如何使用文本框的值来执行函数Onclick的DIV而不是文本框的Onclick

时间:2011-04-22 07:14:33

标签: javascript jquery jquery-selectors

我有这个功能:

$("#border-radius").click(function(){   
var value = $("#border-radius").attr("value");
    $("div.editable").click(function (e) { 

       e.stopPropagation();

       showUser(value, '2', this.id)
       $(this).css({
          "-webkit-border-radius": value
       });  
    });                      
});

它读取文本框的值,

input type="text" id="border-radius" value="20px"

...并做了一些与我的问题无关的事情。

文本框中包含id="border-radius",当点击它(并且有值)时,该函数会执行,如下所示:$("#border-radius").click(function(){ ...do some stuff...

基本上,我希望能够在文本框中键入一个值,然后单击一个对象(提交按钮或div,最好是一个div),然后让它执行以下功能:$("#border-radius").click(function(){ ...do some stuff...而不是必须单击文本框本身

我可以添加/更改什么才能启用此功能?

2 个答案:

答案 0 :(得分:0)

将点击处理程序放在#my-button或任何按钮上。

$("#my-button").click(function(){
    var value = ... /* your original code */
});

它仍然可以使用,因为您获得的值如$("#border-radius").attr("value");而不是$(this).attr("value");。因此,您需要更改的是将click函数附加到哪个元素。

或者,如果你想保留两个处理程序,你可以将它用于这两个元素:

var commonHandler = function(){   
    var value = ... /* your original code */
};

$("#border-radius").click(commonHandler);
$("#my-button").click(commonHandler);

您还可以触发#border-radius的点击事件,但这将执行附加在其上的所有事件处理程序:

$("#my-button").click(function () {
     $("#border-radius").click();
     // or $("#border-radius").trigger('click');
});

答案 1 :(得分:0)

我认为您需要确定事件目标。

你可以通过

来做到这一点

事件目标属性

示例

$(document).ready(function() {
    $("#border-radius").click(function(event) {
        alert(event.target.id);
       //match target id and than proceed futher 
    });
});