1

我有一个小问题。我有一个带有表单输入的代码,但是表单输入类被命名为

text-input small-input

由于 CSS 问题,我无法更改它,这就是问题所在,因为当我在我的 javascript 代码中添加空格时,我的代码不再起作用

Javascript代码

$(document).ready(function() {
    $('.text-input*small-input').keyup(function() {
        var search_term = $(this) .val();
        $.post('search.php', {search_term:search_term}, function(data) {
            $('.result').html(data);

            $('.result li').click(function() {
                var result_value = $(this).text();
                $('.text-input*small-input') .val(result_value);
                $('.result').html(' ');
            });

        });

    });
});

所以在*号处,需要有一个空格。有什么办法可以解决这个问题?谢谢!

4

2 回答 2

4

你不想要一个空间,你什么都不想要。只是.text-input.small-input告诉选择器引擎寻找具有这两个类的元素。

是一篇很好的文章,解释了多部分选择器。

于 2013-03-17T18:30:28.283 回答
0

你有两个问题。你不想要一个空间,你确实想要二等舱上的一个点。

要在 CSS 选择器中为同一对象指定两个类的要求,请在两个类名之间不留空格:

$('.text-input.small-input')    // find single object with both classes on it

有了空格,它会做一些不同的事情:

$('.text-input .small-input')    // find .small-input with ancestor .text-input

当您在它们之间放置一个空格时,会创建一个选择器,该选择器会找到一个匹配的对象.text-input和一个匹配的子对象,而匹配.small-input的对​​象就是子对象。它们之间没有空格意味着两个类必须在同一个对象上。这就是 CSS 规范的工作方式,而不是特定于 jQuery 的。


仅供参考,你试图用这个做什么:

$('.text-input small-input')  // find <small-input> with ancestor that is .text-input

试图找到一个带有<small-input>ancesotr 的标签的对象,.text-input因为您没有在前面放置特殊字符,small-input因此它被解释为标签名称。

于 2013-03-17T18:33:38.303 回答