2012-07-10 66 views
0

我这里有一个的jsfiddle - http://jsfiddle.net/9kKXX/20/jQuery:如何选择相应按钮被点击的表单元素?

我的jQuery函数

$(function() { 
    $('form input[type="text"]').live('keyup', function() { 
     var val = $.trim(this.value); 
     $('form .create-playlist-button').prop('disabled', val.length == 0).click(function(){ 
      alert('ALERT TITLE HERE'); 
      }); 
    }); 
});​ 

要求

  • 点击下拉菜单 - >输入文字 - >打造成
    我会喜欢选择相应的表单元素,如标题,视图等。这是现在不在发生

  • 当我点击创建时,它会一直提醒,我该如何避免这种情况?

我很新的jQuery和阅读的场所情侣,但没有找到解决的办法

谢谢

UPDATE
-------- ----

杰夫在小提琴中工作,但是当我把它放在我的代码上时,它没有点击。我把整个代码示例放在这个小提琴中 - http://jsfiddle.net/rDe9V/,请帮我理解这里会出现什么问题

+0

你尝试过这么远吗?根据[FAQ](http://stackoverflow.com/faq),“最好的Stack Overflow问题有一些源代码”。 – Alex 2012-07-10 13:32:11

+0

更新,它在小提琴 – daydreamer 2012-07-10 13:33:51

+0

此更新看起来像一个完全不同的代码库和一个完全不同的问题。你应该关闭这个问题,并提出一个新的问题。提出多个问题并不适合StackOverflow格式。 – Jeff 2012-07-11 14:17:24

回答

1

这里有一些事情正在进行。 Here is the final fiddle

第一个,您正在绑定单击事件每次键入事件被触发。这意味着警报将至少为播放列表标题中的每个字符触发一次。即使在准备好文件时也需要绑定点击。

$(function() { 
    $('form input[type="text"]').live('keyup', function() { 
     var val = $.trim(this.value); 
     $('form .create-playlist-button').prop('disabled', val.length == 0) 
    }); 
    $('form .create-playlist-button').click(function(){ 
     alert('ALERT TITLE HERE'); 
    }); 
});​ 

,您正在使用重复的ID。页面上有许多元素,

<div id="video-detail"> 

ID必须是唯一的。您应该将这些改为类。

<div class="video-detail"> 

,您可以通过DOM树遍历到点击的按钮和标题横向回落到标题之间的共同祖先获得冠军。假设您将ID更改为类,则看起来像这样:

$('form .create-playlist-button').click(function(e){ 
    var title = $(e.target).closest('.video-detail').find('.title').text(); 
    alert(title); 
}); 

您可以去my fiddle to see the final product

+0

感谢您的杰出答案@Jeff,它真的可以在小提琴上使用,但是在我的js文件中有些不正确,您能否注意到这一点?现在发生了什么,当我点击没有发生。这是那小提琴 - http://jsfiddle.net/rDe9V/ – daydreamer 2012-07-10 14:46:38

0

由于我的声望,我无法发表评论,但新问题是您正在搜索class而不是id

您的代码:

$('.item').live('click', function(){ 
    // alert(this.id); 
    var url = $('#video-frame').attr('src'); 
    var new_url = url.replace(/embed\/[\w -]*/g, 'embed/' + this.id); 
    $('#video-frame').attr('src', new_url); 
}); 

正确的代码(第一行):

$('#item').live('click', function(){ 
    // alert(this.id); 
    var url = $('#video-frame').attr('src'); 
    var new_url = url.replace(/embed\/[\w -]*/g, 'embed/' + this.id); 
    $('#video-frame').attr('src', new_url); 
}); 
+0

这不能解决问题 – daydreamer 2012-07-10 16:22:57

+0

你是对的,但它仍然是一个错误!您必须了解JQuery选择器中'id'和'class'的区别。 – 2012-07-12 12:04:03

相关问题