有条件地设置DOM元素的值

时间:2012-08-09 12:33:48

标签: jquery

以下是否可以做?

$("#textarea1").val = function() {
    $.each(data, function(i, j) {
        if ($.trim($("#text2").val()) == j.l) {
            return j.v;
        } else {}
    });
};

我们可以有条件地设置某些输入类型或div的值吗?

3 个答案:

答案 0 :(得分:1)

您应首先找出该值,然后更改该元素的值。

你以一种非常奇怪的方式做这件事。我不确定你在循环中做了什么。但首先要做,然后设置元素值。

快速举例:

var name = "Sam!";

if ( name != "Sam!" ) {
  $("#textarea1").val("Your not Sam!");
} else {
  $("#textarea1").val("Hey Sam :)");
}

答案 1 :(得分:0)

如果condition评估为true,则该值将设置为"yes"。否则它会保持不变。

$("#textarea1").val(function(i, oldval) {
    return condition ? "yes" : oldval;
});

答案 2 :(得分:0)

我假设您有一些有效的设计模式原因,而不是简单地在$("#textarea1").val(j.v)函数中调用each,而不是像现在一样在函数外部设置它。 (也许你有许多函数对象,你希望有条件地使用它们来设置大量输入?)

也就是说,您的代码只需要进行一些更改:

  1. 正确使用val功能(它是一个setter,而不是一个可设置的属性)。
  2. 现在,return语句正在终止传递给each的函数,而不是外部函数。你应该让each函数设置一个变量,然后通过返回false来中断。
  3. 它应该类似于:

    $("#textarea1").val(function() {
        var result;
        $.each(data, function(i, j) {
            ...
            result = j.v;
            return false;
        });
        return result;
    });
    

    val将自动执行该函数并使用返回值。